我想以编程方式将一组文件从本地目录移动到WebDAV目录中。
我猜一个简单的批处理文件不起作用,因为它是一个WebDAV目录。 注意:该计算机是Windows Server 2003,因此不支持将WebDAV目录映射到驱动器号,因此驱动器看起来像这样:http://dev1:8080/data/xml
并且不能使其看起来像{ {1}}
答案 0 :(得分:1)
Cadaver可能允许您编写完成所有这些操作的批处理脚本;否则你可以直接使用CURL,但你需要更多地了解实际的WebDAV协议(你基本上需要在本地遍历一个目录,MKCOL用于每个子目录,PUT用于每个文件)。
我不确定这些工具在Windows上的编译效果如何,但如果它不能开箱即用,你总是可以在Cygwin之上运行它。当你使用Cygwin时,你也可以创建标准的shell脚本(/ bin / sh或/ bin / bash),它实际上可能比windows的.BAT格式更容易。
答案 1 :(得分:0)
您可以使用BMOVE Method
答案 2 :(得分:0)
您可以使用webdav客户端,例如this project(它的Apache Licensed afaik)中包含的客户端,然后基本上用批处理文件/ shell脚本调用它
答案 3 :(得分:0)
from webdav import WebdavClient
url = 'https://somesite.net'
mydav = WebdavClient.CollectionStorer(url, validateResourceNames=False)
mydav.connection.addBasicAuthorization(<username>, <password>)
fid = open(<filepath of file you want to upload> ,'rb')
mydav.path = <path to where you want the file to be, ie '/a/b/c.txt'>
mydav.uploadFile(fid)
答案 4 :(得分:0)
免费WinSCP(适用于Windows)支持WebDAV(和WebDAVS)。 WinSCP也支持脚本/命令行操作。
通过WebDAV上传文件的示例WinSCP script:
open http://user@webdav.example.com/
put file.txt /path/
close
将脚本保存到文件(例如script.txt
)并运行它:
winscp.com /script=script.txt
您也可以将所有内容放在一行:
winscp.com /command "open http://user@webdav.example.com/" ^
"put file.txt /path/" "close"
如果您确实要移动(不复制)文件,请将-delete
开关添加到put
command:
put -delete file.txt /path/
查看introduction to scripting with WinSCP。
(我是WinSCP的作者)
答案 5 :(得分:0)
请尝试以下代码。
$filename = 'testing.text';
exec('curl --digest --user "' . $username . ':' . $password . '" -T "' .
$filename . '" "https://sandbox.test.com/dav/content/" ');