Как программно переместить файлы в каталог WebDAV - PullRequest
1 голос
/ 10 сентября 2009

Я бы хотел программно переместить группу файлов из локального каталога в каталог WebDAV.

Я предполагаю, что простой командный файл не будет работать, потому что это каталог WebDAV. Примечание : на компьютере установлена ​​ОС Windows Server 2003, поэтому отсутствует поддержка сопоставления каталога WebDAV с буквой диска, поэтому диск просто выглядит следующим образом: http://dev1:8080/data/xml и не может выглядеть как //dev1/data/xml

Ответы [ 6 ]

1 голос
/ 21 августа 2011

Cadaver может позволить вам написать пакетный скрипт, который делает все это; в противном случае вы могли бы использовать CURL напрямую, но вам нужно было бы узнать немного больше о реальном протоколе WebDAV (вам, в основном, нужно локально пройти по каталогу, MKCOL для каждого подкаталога и PUT для каждого файла).

Я не уверен, насколько хорошо эти инструменты компилируются в Windows, но если они не работают "из коробки", вы всегда можете запустить его поверх Cygwin. Пока вы используете Cygwin, вы также можете просто создавать стандартные сценарии оболочки (/ bin / sh или / bin / bash), которые, вероятно, будут на самом деле проще, чем формат Windows .BAT.

0 голосов
/ 18 апреля 2018

Попробуйте следующий код.

$filename = 'testing.text';

exec('curl --digest --user "' . $username . ':' . $password . '" -T "' . 
$filename . '" "https://sandbox.test.com/dav/content/" ');
0 голосов
/ 30 июля 2014

Бесплатно WinSCP (для Windows) поддерживает WebDAV (и WebDAVS). WinSCP также поддерживает сценарии / операции командной строки.

Пример WinSCP-скрипт для загрузки файла через WebDAV:

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 :

put -delete file.txt /path/

См. введение в скриптинг с WinSCP .

(я автор WinSCP)

0 голосов
/ 29 октября 2013

Вы можете использовать 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)
0 голосов
/ 20 августа 2011

Вы можете использовать клиент webdav, такой как тот, который содержится в этом проекте (это Apache Licensed afaik), а затем вызывать его с помощью командного файла / сценария оболочки

0 голосов
/ 07 октября 2009

вы можете использовать метод BMOVE

...