On Feb 17, 2010, at 12:34 PM, Fabio Mancinelli wrote:

> 
> On Feb 10, 2010, at 1:00 AM, Radek Rekas wrote:
> 
>> I'm having trouble finding out how to upload attachments using the RESTful 
>> api.
>> 
>> I've looked at the attachment type in the schema 
>> (http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-rest/src/main/resources/xwiki.rest.model.xsd)
>>  but I cant find any mention of how to link the actual attachment data.
>> 
>> Also none of the xml resource representations are loading, I keep getting 
>> 404 errors:
>> http://www.xwiki.org/rel/attachmentDatahttp://www.xwiki.org/rel/attachments
>> 
>> Can anyone provide any tips on how to upload an attachment to a page using 
>> the restful api?
>> 
>> Thanks,
>> 
> Hi Radek,
> 
> in order to upload an attachment to a page wiki:space.page you must do an 
> HTTP PUT on the 
> 
> http://server/xwiki/rest/wikis/{wiki}/spaces/{space}/pages/{page}/attachments/{attachmentName}
> 
> with the body of the request containing the attachment data.
> 
> The attached file in the page will have the name you specify in the 
> {attachmentName} part of your URI.
> 
> For example, using curl, you can upload a file main.pdf to the Main.WebHome 
> using the following command:
> 
> $ curl -u Admin:admin -T path_to/main.pdf 
> http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/Main/pages/WebHome/attachments/foo.pdf
> 
> If you open the Main.WebHome page you will see that a file foo.pdf is 
> attached to the page and the content is that of your original main.pdf.
> 
> The request authenticates you as Admin.
> 
> The response, if the upload is successful, is a 201 - CREATED response whose 
> body is the XML described in the REST XSD's model containing all the 
> information about the newly created attachment. If the attachment already 
> exists then a 202 - ACCEPTED response code is returned. The response's body 
> contains the same type of XML.
> 
To complete the picture, there is actually another way to upload attachment 
(useful if you are building an application inside XWiki)

To upload an attachment you can POST a multi-part application/form-url-encoded 
(i.e., what is usually sent when you put an <input type="file"> element in a 
form) to the 
http://server/xwiki/rest/wikis/{wiki}/spaces/{space}/pages/{page}/attachments 
URI.

In the form data you can optionally send a "filename" field that contains the 
name the attachment will have once uploaded. If this field is not present, then 
the original file name is used.

This method can be used when you want to upload files using HTML forms.

Authentication is done either by using HTTP headers (like in the previous 
example) or, if they are not present, by using a pre-existing authenticated 
cookie. That means that if you display an upload form that points to the 
previous URI in a wiki page the request will be sent on behalf of the user that 
is currently logged in.

-Fabio


_______________________________________________
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to