The problem that you are facing is that the CD servers do not have access to the
master database. This is intentional, as your CDs should not, in concept, need access to the
master database and so it's better for security if they do not have access to it.
User Generated Content
From a user-generated content (UGC) standpoint, however, this poses some issues. If you want your authors to be able to see what users uploaded in Sitecore then this isn't feasible. Since your CM is the instance that has access to the
master database, one option is to create a service on the CM that will upload your data to the
master database. I do not recommend this, if you're maximizing your securities, since the CM server should never be open to the public.
Typical Recommendation: Custom Viewer
As such, I typically inform my clients up front that when users submit uploaded content it will not go to the
master database, if they have a split CM and CD. If the client would like the ability to view this data from the CM, I offer to write them a custom viewer that they can access from the launchpad. I try to avoid offering to teach them to switch databases to the
web database, as - more often than not - doing so tends to cause more issues down the line (client editing in the wrong DB, etc.).
Alternative: Service to Copy from
Another option is to have a service that runs on your CM, that is responsible for pulling the items from the
web database and recreating them in the
You could create a scheduled task that crawls the section of your
web database's Media Library that contains WFFM-uploaded media, downloads the media and uploads it into Sitecore. You should, of course, include support for comparing with what has already been copied to the
master DB, so that you don't copy the same item twice. You can do this by ensuring that the item you copy into the
master database has the same ID as the item from the
web database. If you do so, you should also copy all of the field contents, as well.