I have exactly the same error message. I'm using SilverStripe 3.1.5. Images get uploaded correctly into the folder and can be seen in the Files section of the CMS. The problem is that they do not get linked with the data object for what they were uploaded.
I can see this in the error log:
PHP Fatal error: Call to a member function getURL() on a non-object in /*path-to-silverstripe*/framework/forms/UploadField.php on line 911, referer: https://*silverstripe-url*/admin/subjects/Subject/EditForm/field/Subject/item/57/edit
Edit: I managed to get this fixed for myself (finally). I'm using SortableFiles module and forgot to add $many_many_extraFileds to my class, which led to my relation table not having a 'SortOrder' field. That made saving records of files to the database to fail.