使用curl将file upload到owncloud

我已经写了一个应用程序,应该上传一些文件到几个移动设备。 现在,我使用的Dropbox,我有一个应用程序( https://www.dropbox.com/developers ),所以我可以上传任何数据到客户端Dropbox。

现在我想转换到自己的云,因为一些安全问题。 我已经读过这个: 以编程方式上传文件到ownCloud服务器

但不幸的是,这并没有帮助。

我试过了

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

该文件已上传,但有一个问题:某种types的标题被添加到我的文件。

原始testing文件:

testing

已上传的文件:

————————– 00c5e21306fd0b2d Content-Disposition:form-data; NAME = “F”; filename =“test”Content-Type:application / octet-stream

模具正在testing中。

————————– 00c5e21306fd0b2d–

虽然这对于任何文本来说都是非常烦人的,但对于任何二进制文件(如JPG等)来说都是一种灾难,因为上传之后无法打开它们。

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

 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> 

但结果更糟糕!

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

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

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

上传一个文件,你必须做一个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://img.zgserver.com/linux/image.jpg" --data-binary @"/Users/gokul/Desktop/image.jpg"