[wp-trac] [WordPress Trac] #9233: Updating an uploaded media file via AtomPub PUT fails

WordPress Trac wp-trac at lists.automattic.com
Thu Feb 26 03:27:04 GMT 2009

#9233: Updating an uploaded media file via AtomPub PUT fails
 Reporter:  josephscott   |       Owner:  josephscott
     Type:  defect (bug)  |      Status:  new        
 Priority:  normal        |   Milestone:  2.7.2      
Component:  AtomPub       |     Version:  2.7.1      
 Severity:  normal        |    Keywords:  has-patch  
 Tim Armes reported on the wp-xmlrpc email list that attempts to update
 media uploads via AtomPub PUT are failing:

 Finally, I've discovered a more serious problem.  It's not possible to
 PUT an updated image file.  Wordpress returns 200 to say that it's all
 worked, but in reality it hasn't.  I tracked it down to this code in
 the put_file function:

                 $location = get_post_meta($entry['ID'],
 '_wp_attached_file', true);
                 $filetype = wp_check_filetype($location);

                 if(!isset($location) || 'attachment' !=
 $entry['post_type'] ||
                         $this->internal_error(__('Error ocurred while
 accessing post
 metadata for file location.'));

                 $fp = fopen("php://input", "rb");
                 $localfp = fopen($location, "w+");
 log_app("tim", $location);
                 while(!feof($fp)) {
                         fwrite($localfp,fread($fp, 4096));

 When I PUT to ..../attachement/file/ID the code tries to locate the
 physical file and overwrite it.  The problem is that $location
 actually gets the path relative to the uploads folder, so it contains
 something like 2009/02/myfile.jpg

 I've included a patch to fix the location problem by looking up the proper
 upload dir via wp_upload_dir().  With the patch I've confirmed that
 updates to an uploaded file via AtomPub PUT work.

 I noticed another problem though, it only updates the original file, not
 the generated versions or the meta data.  This is particularly bad if the
 updated image is a different size.  I tried calling
 wp_generate_attachment_metadata() after updating the image, but it didn't
 update the generated images or the meta data about the image.

Ticket URL: <http://core.trac.wordpress.org/ticket/9233>
WordPress Trac <http://trac.wordpress.org/>
WordPress blogging software

More information about the wp-trac mailing list