60

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

4

9 回答 9

95

cURL会为你做这件事。

curl -T filetoput.xml http://www.url.com/filetoput.xml
于 2009-07-30T08:08:33.870 回答
16

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

于 2009-07-30T08:11:03.663 回答
9

最常用的命令行 HTTP 实用程序似乎是cURL,它可以PUT使用-T 选项。不过,您需要了解相当多的 WebDAV 协议才能做更多的事情,而不是使用它进行上传。

于 2009-07-30T08:08:47.537 回答
6

如果您需要通过 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 中的占位符。因此它发出多个请求(每个文件一个),并且由于所有嵌套文件夹都是预先创建的 - 这些请求不应该失败。

希望它对某人有帮助。

于 2018-11-11T22:00:26.593 回答
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"

首先介绍使用 WinSCP 编写脚本

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

(我是WinSCP的作者)

于 2014-07-29T14:24:59.087 回答
4

另一种选择是“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
于 2014-11-26T07:09:00.373 回答
3

此概述包含 webdav 服务器和客户端的详尽列表。

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

于 2009-07-30T08:32:51.340 回答
2

在 KDE 下使用 KIO:

kioclient cp file.txt 'webdavs://user@webdav.example.com:443/'
于 2012-04-20T21:41:54.253 回答
0

Teleric Fiddler 有一个“撰写”选项卡,您可以在其中创建自己的自定义 WebDAV 请求。例如 PROPFIND 和 OPTIONS 等。

于 2019-06-18T09:44:35.203 回答