我已经编写了一个应用程序,应该将一些文件上传到多个移动设备。现在,我正在使用保管箱,我有一个应用程序(https://www.dropbox.com/developers),因此可以将任何数据上传到客户端保管箱。

现在由于一些安全问题,我想切换到owncloud。我已经读过了:
Uploading files to an ownCloud server programatically

但不幸的是,它没有帮助。

我试过了

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

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

原始测试文件:



上传的文件:



尽管这对于任何文本文件来说确实很烦人,但对诸如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"

09-10 10:26
查看更多