Add value to field using Entity Metadata Wrapper
One issue may be that get_object_vars() returns an array with keys that the file field does not understand.  The EntityMetadataWrapper documentation provides two options for setting file reference values, though it appears to use single value fields in the examples:

Setting the file directly:

$w_containing_node-&gt;field_attachment_content-&gt;file-&gt;set( $file_obj );


Providing an array with just fid:

$w_containing_node-&gt;field_attachment_content-&gt;set( array('fid' =&gt; $fid) )




One of the comments provides the following examples from the entity tests which apply to a multi-value field, though I'm not sure if setting the full file object will work appending a new item:

$wrapper-&gt;field_file[0] = array('fid' =&gt; $file-&gt;fid, 'display' =&gt; TRUE);
$wrapper-&gt;field_file[1]-&gt;file = $file;