如何以编程方式将文件移动到WebDAV目录中

时间:2009-09-10 16:52:55

标签: webdav cadaver

我想以编程方式将一组文件从本地目录移动到WebDAV目录中。

我猜一个简单的批处理文件不起作用,因为它是一个WebDAV目录。 注意:该计算机是Windows Server 2003,因此不支持将WebDAV目录映射到驱动器号,因此驱动器看起来像这样:http://dev1:8080/data/xml并且不能使其看起来像{ {1}}

6 个答案:

答案 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)

您可以使用python-webdav-library

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/" ');