【发布时间】:2010-11-15 08:40:23
【问题描述】:
我需要一个可以进行 WebDAV 上传 (HTTP PUT) 的命令行实用程序。
【问题讨论】:
标签: webdav
我需要一个可以进行 WebDAV 上传 (HTTP PUT) 的命令行实用程序。
【问题讨论】:
标签: webdav
cURL 会为你做这件事。
curl -T filetoput.xml http://www.url.com/filetoput.xml
【讨论】:
curl -T <filename> -u <username>:<password> <url>。
-o /dev/stdout获取进度输出
如果您需要通过 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' \;
上面的代码循环遍历给定目录中的所有文件(使用查找),并将输出(带有相对路径的文件名)添加到网络服务器 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"
以introduction to scripting with WinSCP开头。
你甚至可以拥有WinSCP GUI generate the script file for you。
(我是 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
【讨论】:
this overview 包含一个完整的 webdav 服务器和客户端列表。
我会选择尸体,或者,如果我的需求非常具体,我会选择使用 PyWebDAV 库的 python 脚本。
【讨论】:
在 KDE 下使用 KIO:
kioclient cp file.txt 'webdavs://user@webdav.example.com:443/'
【讨论】:
Teleric Fiddler 有一个“撰写”选项卡,您可以在其中创建自己的 自己定制的 WebDAV 请求。例如。 PROPFIND 和 OPTIONS 等。
【讨论】: