Mik*_*aid 78
cURL会为你做的.
curl -T filetoput.xml http://www.url.com/filetoput.xml
Run Code Online (Sandbox Code Playgroud)
如果您需要通过 WebDAV 上传整个目录而不是一个文件,您可以使用以下方法。
假设您有以下本地文件夹,您将通过 WebDAV 上传。
local_folder_to_upload
? test.txt
? test1.txt
?
????nested_folder1
? ? file1.txt
? ? file2.txt
? ?
? ????nested_folder2
? ? file11.txt
? ? file12.txt
Run Code Online (Sandbox Code Playgroud)
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'
Run Code Online (Sandbox Code Playgroud)
请注意,您不能根据规范在一个请求中创建它们。
如果请求创建集合 /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' \;
Run Code Online (Sandbox Code Playgroud)
上面的代码循环遍历给定目录中的所有文件(使用 find)并将输出(带有相对路径的文件名)添加到{}网络服务器 url 中的占位符。因此它发出多个请求(每个文件一个),并且由于所有嵌套文件夹都是预先创建的 - 这些请求不应该失败。
希望它对某人有帮助。
免费的WinSCP(适用于Windows)支持WebDAV(和WebDAVS).
WinSCP也支持脚本/命令行操作.
通过WebDAV上传文件的示例WinSCP脚本:
open https://user@webdav.example.com/
put file.txt /path/
exit
Run Code Online (Sandbox Code Playgroud)
将脚本保存到文件(例如script.txt)并运行如下:
winscp.com /script=script.txt
Run Code Online (Sandbox Code Playgroud)
您还可以将所有内容放在一行中:
winscp.com /command "open https://user@webdav.example.com/" "put file.txt /path/" "exit"
Run Code Online (Sandbox Code Playgroud)
您甚至可以让WinSCP GUI为您生成脚本文件.
(我是WinSCP的作者)
另一个选择是“davix”
https://davix.web.cern.ch/davix/docs/devel/
它可以安装
sudo yum install davix(红帽)或
sudo apt install davix(ubuntu)
它已经分离了 utils,如 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
Run Code Online (Sandbox Code Playgroud)