Replace an existing attachment with a new version or create a new attachment
| 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 path |
| 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) |
| 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 |
Input:
File to upload
Output:
<file id="{int}" revision="{int}" href="{uri}">
<filename>{text}</filename>
<description>{text}</description>
<contents type="{mimetype}" size="{int}" width="{int}" height="{int}" href="{uri}" />
<contents.preview rel="thumb" type="{mimetype}" maxwidth="{int}" maxheight="{int}" href="{uri}" revision="{int}" />
<contents.preview rel="webview" type="{mimetype}" maxwidth="{int}" maxheight="{int}" href="{uri}" revision="{int}" />
<date.created>{date}</date.created>
<user.createdby id="{int}" href="{uri}">
<nick>{text}</nick>
<username>{text}</username>
<email>{text}</email>
</user.createdby>
<page.parent id="{int}" href="{uri}">
<title>{text}</title>
<path>{text}</path>
</page.parent>
</file>
A single Expert site can store up to 5,000 attachments.
File uploads to template pages are not allowed.
If a file with the same name already exists on the specified page, a new revision of the existing file is uploaded. Otherwise, a new file is created.
The contents.preview element only exists if a file preview is available. Preview generation requires the file to be an image and fall within a certain size.
The following code example uploads the file "myfile.jpg" to the home page:
Plug p = Plug.New("http://help.mindtouch.us/@api/deki");
p.At("users", "authenticate").WithCredentials("admin", "password").Get();
DreamMessage msg = DreamMessage.FromFile("c:\\temp\\myfile.jpg");
msg = p.At("pages", "home", "files", "=myfile%252ejpg").With("description", "File description text").Put(msg);
Sample response indicating that the second revision of "myfile.jpg" was successfully uploaded:
<file id="456" revision="2" href="http://help.mindtouch.us/@api/deki/files/456/info?revision=2">
<filename>myfile.jpg</filename>
<description>File description text</description>
<contents type="image/jpeg" size="53112" width="476" height="480" href="http://help.mindtouch.us/@api/deki/files/456?revision=2" />
<contents.preview rel="thumb" type="image/jpeg" maxwidth="160" maxheight="160" href="http://help.mindtouch.us/@api/deki/files/456?revision=2&size=thumb" revision="2" />
<contents.preview rel="webview" type="image/jpeg" maxwidth="550" maxheight="550" href="http://help.mindtouch.us/@api/deki/files/456?revision=2&size=webview" revision="2" />
<date.created>2007-09-06T19:23:21Z</date.created>
<user.createdby id="1" href="http://help.mindtouch.us/@api/deki/users/1">
<nick>Admin</nick>
<username>Admin</username>
<email>admin@mindtouch.com</email>
</user.createdby>
<page.parent id="29" href="http://help.mindtouch.us/@api/deki/pages/29">
<title>DekiWiki (Hayes)</title>
<path></path>
</page.parent>
</file>
Add notes about requirements or config values
The following curl command issues a PUT request to send file "foo.jpg" and upload it to page "test" under the name "bar.jpg".
curl -u username:password -T foo.jpg -i http://mindtouch.address/@api/deki/pages/=test/files/=bar.jpg
The following curl command will attach the (legal) image "patrickstewart.jpg" to Jean Luc Picard's page under the name "captain.jpg".

curl -u username:password -T patrickstewart.jpg -i http://192.168.168.110/@api/deki/pages/=Jean%2520Luc%2520Picard/files/=captain.jpg
HTTP/1.1 200 OK Date: Fri, 08 Jan 2010 23:38:21 GMT Server: Dream-HTTPAPI/1.7.2.17433 X-Deki-Site: id="default" Content-Type: application/xml; charset=utf-8 Content-Length: 1285 Via: 1.1 dekiwiki
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/>
<contents type="application/octet-stream" size="495835" width="1691" height="2343" href="http://192.168.168.110/@api/deki/files/9/=captain.jpg"/>
<contents.preview rel="thumb" type="image/jpeg" maxwidth="160" maxheight="160" href="http://192.168.168.110/@api/deki/files/9/=captain.jpg?size=thumb"/>
<contents.preview rel="webview" type="image/jpeg" maxwidth="550" maxheight="550" href="http://192.168.168.110/@api/deki/files/9/=captain.jpg?size=webview"/>
<date.created>2010-01-08T23:37:56Z</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="2" totalcount="2" 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>
</file>