Skip to main content

Overwriting a file

Replacing the contents of an existing file very similar as Uploading a new file, by sending a PUT request with the new contents of the file. This PUT must go to the IRI for the media object representing the file - that is, the URL indicated by the link rel="edit-media" element in the Atom representation.

We can get this URL by querying the Atom representation of a resource:

mat@augustus:~$ curl -i -X GET -u cuscav 
   "https://files.warwick.ac.uk/files/api/atom/node?account=mmannion&path=mmannion/Files/Exam_Results.pdf"
Enter host password for user 'cuscav':

HTTP/1.1 200 OK
Date: Tue, 05 Mar 2013 18:25:58 GMT
Content-Type: application/atom+xml;charset=utf-8

<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app"> xmlns:files="http://go.warwick.ac.uk/elab-schemas/files/atom"
  <title>Exam Results.pdf</title>
  <link rel="edit" href="https://files.warwick.ac.uk/files/api/atom/node?account=mmannion&path=mmannion%2FFiles%2FExam+Results.pdf"/>
  <link rel="edit-media" href="https://files.warwick.ac.uk/files/api/atom/media?account=mmannion&path=mmannion%2FFiles%2FExam+Results.pdf"/>
  <link rel="alternate" type="application/pdf" href="https://files.warwick.ac.uk/mmannion/files/Exam+Results.pdf"/>
  <content type="application/pdf" src="https://files.warwick.ac.uk/mmannion/files/Exam+Results.pdf"/>
  <id>https://files.warwick.ac.uk/mmannion/files/Exam+Results.pdf</id>
  <updated>2013-03-05T16:38:34.971Z</updated>
  <published>2013-03-05T16:38:35.023Z</published>
  <app:edited>2013-03-05T16:38:34.971Z</app:edited>
  <author>
    <name>Mathew Mannion</name>
  </author>
  <summary type="text">Exam Results.pdf</summary>
  <files:mimetype>application/pdf</files:mimetype>
  <files:size>11923854</files:size>
  <files:antivirus>
    <files:checking>false</files:checking>
    <files:checked>true</files:checked>
    <files:hasvirus>false</files:hasvirus>
  </files:antivirus>
</entry>  

This is always identical to the Atom representation of a resource, but with /media instead of /node in the URL.

We can now overwrite the file with a PUT to this URL:

mat@augustus:~$ curl -i -X PUT --data-binary @newcontent.pdf -H 'Content-Type: application/pdf' -H 'Slug: Exam Results.pdf' -u cuscav 
   "https://files.warwick.ac.uk/files/api/atom/media?account=mmannion&path=mmannion/Files/Exam+Results.pdf"
Enter host password for user 'cuscav':

HTTP/1.1 200 OK
Date: Tue, 05 Mar 2013 18:34:41 GMT
Content-Length: 0
  

The server responds with a simple 200 OK to indicate the content has been overwritten.

Note that sending anything other than a PUT request to the media endpoint will result in a 405 Method Not Allowed - actions such as renaming folders and files must use the Atom representation.