使用curl将文件上载到owncloud

时间:2015-08-18 13:49:00

标签: linux curl console owncloud

我编写了一个应用程序,应该将一些文件上传到几个移动设备。到现在为止,我正在使用Dropbox,我有一个应用程序(DateTimeFormatter),因此我可以将任何数据上传到客户端Dropbox。

现在我想切换到owncloud,因为一些安全问题。我已经读过这个: https://www.dropbox.com/developers

但遗憾的是它并没有帮助。

我试过

mischka@lappy:/tmp$ curl -X PUT -u 'username:password' "http://myserver/owncloud/remote.php/webdav/test" --data-binary @"/tmp/test"
<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
  <s:exception>Sabre\DAV\Exception\BadRequest</s:exception>
  <s:message>expected filesize 19 got 0</s:message>
</d:error>

文件已上传,但出现问题:我的文件中添加了某种标题。

原始测试文件:

  

测试

上传的文件:

  

-------------------------- 00c5e21306fd0b2d Content-Disposition:form-data; NAME = “F”; filename =“test”内容类型:   应用/八位字节流

     

Dies ist ein Test。

     

-------------------------- 00c5e21306fd0b2d -

虽然这对任何文本文件都很烦人,但它对任何二进制文件(如JPG等)都是一个灾难,因为它们在上传后无法再打开。

这就是为什么,我尝试了另一种可能的方式,其中描述了:

&json.wrf=callback

但结果更糟!

谁能告诉我,我做错了什么?

2 个答案:

答案 0 :(得分:9)

-F表示表单上传,您应该使用--data-binary代替:

curl -X PUT -u username:password 
"http://myserver.com/owncloud/remote.php/webdav/test" --data-binary @"/tmp/test"

答案 1 :(得分:1)

上传文件您必须对文件的命运发出 PUT 请求,例如:http://yourOwnCloudServer/remote.php/webdav/text.txt

这是CURL命令:

curl -X PUT -u username:password "http://yourOwnCloudServer/remote.php/webdav/text.txt" -F myfile=@"/Users/gokul/Desktop/text.txt"

您还可以将--data-binary用于媒体文件。

"http://yourOwnCloudServer/remote.php/webdav/image.jpg" --data-binary @"/Users/gokul/Desktop/image.jpg"