我需要一个可以进行 WebDAV 上传(HTTP PUT)的命令行实用程序。
9 回答
cURL会为你做这件事。
curl -T filetoput.xml http://www.url.com/filetoput.xml
如果您需要通过 WebDAV 上传整个目录而不是一个文件,则可以使用以下方法。
假设您有以下要通过 WebDAV 上传的本地文件夹。
local_folder_to_upload
│ test.txt
│ test1.txt
│
└───nested_folder1
│ │ file1.txt
│ │ file2.txt
│ │
│ └───nested_folder2
│ │ file11.txt
│ │ file12.txt
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'
请注意,您不能根据规范在一个请求中创建它们。
如果请求创建集合 /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' \;
上面的代码循环遍历给定目录中的所有文件(使用查找)并将输出(带有相对路径的文件名)添加到{}
网络服务器 url 中的占位符。因此它发出多个请求(每个文件一个),并且由于所有嵌套文件夹都是预先创建的 - 这些请求不应该失败。
希望它对某人有帮助。
免费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"
您甚至可以让WinSCP GUI 为您生成脚本文件。
(我是WinSCP的作者)
另一种选择是“davix”
https://dmc.web.cern.ch/projects/davix/home
它已经分离了 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
在 KDE 下使用 KIO:
kioclient cp file.txt 'webdavs://user@webdav.example.com:443/'
Teleric Fiddler 有一个“撰写”选项卡,您可以在其中创建自己的自定义 WebDAV 请求。例如 PROPFIND 和 OPTIONS 等。