我编写了一个应用程序,应该将一些文件上传到几个移动设备。到现在为止,我正在使用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
但结果更糟!
谁能告诉我,我做错了什么?
答案 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"