系统相关
首页 > 系统相关> > linux – 使用curl将文件上传到owncloud

linux – 使用curl将文件上传到owncloud

作者:互联网

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

现在我想切换到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"

该文件已上传,但出现了问题:某些标题已添加到我的文件中.

原始测试文件:

test

上传的文件:

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

Dies ist ein Test.

————————–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"

标签:linux,curl,console,owncloud
来源: https://codeday.me/bug/20190717/1489059.html