Утилита командной строки для загрузки WebDAV - PullRequest
51 голосов
/ 30 июля 2009

Мне нужна утилита командной строки, которая может выполнять загрузку WebDAV (HTTP PUT).

Ответы [ 9 ]

76 голосов
/ 30 июля 2009

cURL сделает это за вас.

curl -T filetoput.xml http://www.url.com/filetoput.xml
12 голосов
/ 30 июля 2009

Для Unix (и Windows с Cygwin установлен) вы можете использовать Cadaver

9 голосов
/ 30 июля 2009

Наиболее часто используемая утилита командной строки HTTP выглядит как cURL , которая будет делать PUT с ее опцией -T . Тем не менее, вам нужно немного разбираться в протоколе WebDAV, чтобы делать больше, чем просто загружать его.

5 голосов
/ 29 июля 2014

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

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

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)

3 голосов
/ 26 ноября 2014

Другой вариант - "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
3 голосов
/ 30 июля 2009

этот обзор содержит полный список серверов и клиентов webdav.

Я бы выбрал труп или, если бы мои потребности были очень конкретными, сценарий на python с использованием библиотеки PyWebDAV .

2 голосов
/ 12 ноября 2018

Если вам нужно загрузить весь каталог вместо одного файла через 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 , чтобы загрузить ее на свой сервер, используя curl.

cd local_folder_to_upload && find . -exec curl -T {} 'http://your.server/uploads/{}' --user 'name:pwd' \;

Код выше зациклите все ваши файлы в данном каталоге (используя find) и добавьте вывод (имя файла с относительным путем) к заполнителю {} в URL вашего веб-сервера. Таким образом, он делает несколько запросов (по одному на каждый файл), и поскольку все вложенные папки были созданы заранее - эти запросы не должны завершаться сбоем.

Надеюсь, это кому-нибудь пригодится.

2 голосов
/ 21 апреля 2012

Использовать KIO под KDE:

kioclient cp file.txt 'webdavs://user@webdav.example.com:443/'
0 голосов
/ 18 июня 2019

Teleric Fiddler имеет вкладку «Создать», где вы можете создать свой собственный индивидуальный запрос WebDAV. Например. PROPFIND и ВАРИАНТЫ и т. Д.

...