files/{fileid} (PUT)
Overview
Replace an existing attachment with a new version
- REST Method: PUT
- Method Access: public
Uri Parameters
Name | Type | Description |
filename | string | Double uri-encoded file name. Should be prefixed with "=" if it does not have an extension. |
pageid | string | either an integer page ID, "home", or "=" followed by a double uri-encoded page title |
Query Parameters
Name | Type | Description |
redirects | int? | If zero, do not follow page redirects. |
description | string? | file attachment description |
authenticate | bool? | Force authentication for request (default: false) |
Return Codes
Name | Value | Description |
OK | 200 | The request completed successfully |
Bad Request | 400 | Invalid input parameter or request body |
Forbidden | 403 | Update access to the page is required |
Not Found | 404 | Requested page could not be found |
Message Format
Output:
<file id="{id}" revision="{int}" href="{uri}"> <filename>{text}</filename> <description>{text}</description> <contents type="{MIME}" size="{int}" href="{uri}"/> <date.created>{date}</date.created> <user.createdby id="{int}" href="{uri}"> <nick>{text}</nick> <username>{text}</username> <fullname>{text}</fullname> <email>{text}</email> <hash.email>{hash}</hash.email> <uri.gravatar>{uri}</uri.gravatar> </user.createdby> <revisions count="{int}" totalcount="{int}" href="{uri}"/> <page.parent id="{int}" href="{uri}"> <uri.ui>{uri}</uri.ui> <title>{text}</title> <path>{text}</path> <namespace>{namespace}</namespace> </page.parent> <properties/> </file>
Implementation Notes
Replaces an existing file.
Curl Sample: Replace a File
The following command can be used to replace an existing file. In this case, a file with file ID = 1 is replaced by image foo.jpg. Note that the file does not have to be an image. Also, a file with file ID = 1 must exist for the operation to succeed.
Sample Code
curl -u username:password -H "Content-Type: image/jpg" -T foo.jpg -i http://192.168.168.110/@api/deki/files/1
Implementation notes
curl flags
- -u
- Basic HTTP authentication. Sends a username and password to server so it can verify whether a user is of privilege to perform specific operation.
- -T
- Sends a file using the PUT command.
- -i
- Includes the HTTP response header in the output. Useful for debugging.
MIMEs
- It's important to specify a MIME type in the "Content-Type" header for the server to process the file correctly.
Example
A user uploaded a copyright image (File ID = 9). The use of such image has brought on the heat of the digital police. Instead of removing it, we will replace it with the copyright sign.
copyright.png
Sample Code
curl -u username:password -H "Content-Type: image/png" -T copyright.png -i http://192.168.168.110/@api/deki/files/9
HTTP Response Headers
HTTP/1.1 200 OK Date: Tue, 12 Jan 2010 19:11:40 GMT Server: Dream-HTTPAPI/1.7.2.17433 X-Deki-Site: id="default" Content-Type: application/xml; charset=utf-8 Content-Length: 2790 Via: 1.1 dekiwiki
HTTP Response Body
Content-Type: application/xml
<?xml version="1.0"?> <file id="9" href="http://192.168.168.110/@api/deki/files/9/info"> <filename>captain.jpg</filename> <description>image 9</description> <contents type="image/png" size="12557" width="1691" height="2343" href="http://192.168.168.110/@api/deki/files/9/=captain.jpg"/> <contents.preview rel="thumb" type="image/png" maxwidth="160" maxheight="160" href="http://192.168.168.110/@api/deki/files/9/=captain.jpg?size=thumb"/> <contents.preview rel="webview" type="image/png" maxwidth="550" maxheight="550" href="http://192.168.168.110/@api/deki/files/9/=captain.jpg?size=webview"/> <date.created>2010-01-12T19:11:39Z</date.created> <user.createdby id="1" href="http://192.168.168.110/@api/deki/users/1"> <nick>Admin</nick> <username>Admin</username> <email>melder@mindtouch.com</email> <hash.email>637b79dca5c8ebdc4347bccca42d3487</hash.email> <uri.gravatar>http://www.gravatar.com/avatar/637b79dca5c8ebdc4347bccca42d3487</uri.gravatar> </user.createdby> <revisions count="5" totalcount="5" href="http://192.168.168.110/@api/deki/files/9/revisions"/> <page.parent id="51" href="http://192.168.168.110/@api/deki/pages/51?redirects=0"> <uri.ui>http://192.168.168.110/Jean_Luc_Picard</uri.ui> <title>Jean Luc Picard</title> <path>Jean_Luc_Picard</path> <namespace>main</namespace> </page.parent> <properties count="2" href="http://192.168.168.110/@api/deki/files/9/properties"> <property name="urn:deki.mindtouch.com#description" href="http://192.168.168.110/@api/deki/files/9/properties/urn%253adeki.mindtouch.com%2523description/info" etag="29.r2_ts2010-01-11T20:42:40Z"> <contents type="text/plain; charset=utf-8" size="7" href="http://192.168.168.110/@api/deki/files/9/properties/urn%253adeki.mindtouch.com%2523description">image 9</contents> <date.modified>2010-01-11T20:42:40Z</date.modified> <user.modified id="1" href="http://192.168.168.110/@api/deki/users/1"> <nick>Admin</nick> <username>Admin</username> <email>melder@mindtouch.com</email> <hash.email>637b79dca5c8ebdc4347bccca42d3487</hash.email> <uri.gravatar>http://www.gravatar.com/avatar/637b79dca5c8ebdc4347bccca42d3487</uri.gravatar> </user.modified> </property> <property name="iscopyright" href="http://192.168.168.110/@api/deki/files/9/properties/iscopyright/info" etag="34.r1_ts2010-01-12T00:41:49Z"> <contents type="text/plain" size="2" href="http://192.168.168.110/@api/deki/files/9/properties/iscopyright">no</contents> <date.modified>2010-01-12T00:41:49Z</date.modified> <user.modified id="1" href="http://192.168.168.110/@api/deki/users/1"> <nick>Admin</nick> <username>Admin</username> <email>melder@mindtouch.com</email> <hash.email>637b79dca5c8ebdc4347bccca42d3487</hash.email> <uri.gravatar>http://www.gravatar.com/avatar/637b79dca5c8ebdc4347bccca42d3487</uri.gravatar> </user.modified> <change-description/> </property> </properties> </file>