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

时间:2009-07-30 08:02:04

标签: webdav

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

9 个答案:

答案 0 :(得分:76)

cURL会为你做。

curl -T filetoput.xml http://www.url.com/filetoput.xml

答案 1 :(得分:12)

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

答案 2 :(得分:9)

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

答案 3 :(得分:5)

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

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

open https://user@webdav.example.com/
put file.txt /path/
exit

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

winscp.com /script=script.txt

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

winscp.com /command "open https://user@webdav.example.com/" "put file.txt /path/" "exit"

introduction to scripting with WinSCP开始。

您甚至可以拥有WinSCP GUI generate the script file for you

(我是WinSCP的作者)

答案 4 :(得分:3)

this overview包含webdav服务器和客户端的完整列表。

我选择尸体,或者,如果我的需求非常具体,则选择使用PyWebDAV库的python脚本。

答案 5 :(得分:3)

另一种选择是“davix”

https://dmc.web.cern.ch/projects/davix/home

它已经分离了像davix-mkdir davix-put等的utils 您可以在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

答案 6 :(得分:2)

在KDE下使用KIO:

kioclient cp file.txt 'webdavs://user@webdav.example.com:443/'

答案 7 :(得分:2)

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

想象一下,您有以下要通过WebDAV上传的本地文件夹。

local_folder_to_upload
│   test.txt
│   test1.txt    
│
└───nested_folder1
│   │   file1.txt
│   │   file2.txt
│   │
│   └───nested_folder2
│       │   file11.txt
│       │   file12.txt

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

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'

请注意,您无法根据to the spec在一个请求中创建它们。

  

如果请求创建集合/ 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' \;

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

希望对某人有帮助。

答案 8 :(得分:0)

Teleric Fiddler有一个“ compose”标签,您可以在其中创建自己的 自己定制的WebDAV请求。例如。 PROPFIND和OPTIONS等。