我需要一个可以执行WebDAV上传(HTTP PUT)的命令行实用程序。
答案 0 :(得分:76)
cURL会为你做。
curl -T filetoput.xml http://www.url.com/filetoput.xml
答案 1 :(得分:12)
答案 2 :(得分:9)
答案 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等。