用于WebDAV上载的命令行实用程序

rpe*_*rez 52 webdav

我需要一个可以执行WebDAV上传(HTTP PUT)的命令行实用程序.

Mik*_*aid 78

cURL会为你做的.

curl -T filetoput.xml http://www.url.com/filetoput.xml
Run Code Online (Sandbox Code Playgroud)

  • +1,cURL获胜.如果需要进行身份验证,可以使用`curl -T <filename> -u <username>:<password> <url>`. (8认同)
  • @Cninroh:我不相信这是真的.根据curl联机帮助页:"如果指定的URL中没有文件部分,Curl将附加本地文件名.请注意,您必须在最后一个目录上使用尾随/来真正向Curl证明没有文件名或curl会认为你的上一个目录名是要使用的远程文件名." (4认同)
  • 对于 WebDAV,如果没有非常微小但重要的细节,您的示例将无法工作 -&gt; 包括您想要远程使用的文件的名称。所以:curl -T filetoput.xml http://www.url.com/filetoput.xml (2认同)

Mat*_*ock 13

对于unix(以及安装了Cygwin的 Windows ),您可以使用Cadaver


Car*_*rey 9

最常用的命令行HTTP实用程序似乎是cURL,它将PUT使用-T选项.但是,您需要了解相当多的WebDAV协议,而不是使用它进行上传.


Art*_*ich 6

如果您需要通过 WebDAV 上传整个目录而不是一个文件,您可以使用以下方法。

假设您有以下本地文件夹,您将通过 WebDAV 上传。

local_folder_to_upload
?   test.txt
?   test1.txt    
?
????nested_folder1
?   ?   file1.txt
?   ?   file2.txt
?   ?
?   ????nested_folder2
?       ?   file11.txt
?       ?   file12.txt
Run Code Online (Sandbox Code Playgroud)

1.首先,您需要从服务器上的本地文件夹(如果有)创建嵌套目录。由于 WebDAV 不支持递归上传,您必须在单独的步骤中执行此操作(如果您要使用ftp- 您将添加--ftp-create-dirs标志来执行此操作)。要通过 WebDAV 创建这些文件夹,您需要使用MKCOL 方法

curl -X MKCOL 'http://your.server/uploads/nested_folder1' --user 'name:pwd'
curl -X MKCOL 'http://your.server/uploads/nested_folder1/nested_folder2' --user 'name:pwd'
Run Code Online (Sandbox Code Playgroud)

请注意,您不能根据规范在一个请求中创建它们。

如果请求创建集合 /a/b/c/d/,并且 /a/b/c/ 不存在,则请求必须失败。

2.第二,您可以使用find shell 命令的输出将其上传到您的服务器curl

cd local_folder_to_upload && find . -exec curl -T {} 'http://your.server/uploads/{}' --user 'name:pwd' \;
Run Code Online (Sandbox Code Playgroud)

上面的代码循环遍历给定目录中的所有文件(使用 find)并将输出(带有相对路径的文件名)添加到{}网络服务器 url 中的占位符。因此它发出多个请求(每个文件一个),并且由于所有嵌套文件夹都是预先创建的 - 这些请求不应该失败。

希望它对某人有帮助。


Mar*_*ryl 5

免费的WinSCP(适用于Windows)支持WebDAV(和WebDAVS).
WinSCP也支持脚本/命令行操作.

通过WebDAV上传文件的示例WinSCP脚本:

open https://user@webdav.example.com/
put file.txt /path/
exit
Run Code Online (Sandbox Code Playgroud)

将脚本保存到文件(例如script.txt)并运行如下:

winscp.com /script=script.txt
Run Code Online (Sandbox Code Playgroud)

您还可以将所有内容放在一行中:

winscp.com /command "open https://user@webdav.example.com/" "put file.txt /path/" "exit"
Run Code Online (Sandbox Code Playgroud)

首先介绍使用WinSCP编写脚本.

您甚至可以让WinSCP GUI为您生成脚本文件.

(我是WinSCP的作者)


xoi*_*oid 5

另一个选择是“davix”

https://davix.web.cern.ch/davix/docs/devel/

它可以安装

sudo yum install davix(红帽)或 sudo apt install davix(ubuntu)

它已经分离了 utils,如 davix-mkdir davix-put 等,您可以在 URL 中指定积分,如

 davix-mkdir http://user:passw@example.com/dir_to_create
 davix-put local_file http://user:passw@example.com/dir_to_create/remote_file_name
Run Code Online (Sandbox Code Playgroud)