Утилита командной строки для загрузки WebDAV
-
05-07-2019 - |
Вопрос
Мне нужна утилита командной строки, которая может выполнять загрузку WebDAV (HTTP PUT). Р>
Решение
cURL сделает это за вас.
curl -T filetoput.xml http://www.url.com/filetoput.xml
Другие советы
Наиболее часто используемая утилита HTTP командной строки - это cURL , которая выполняет PUT
с его параметром -T . Тем не менее, вам нужно немного разбираться в протоколе WebDAV, чтобы делать больше, чем просто загружать его. Р>
Бесплатно 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 для вас, чтобы сгенерировать файл сценария .
(я автор WinSCP)
этот обзор содержит подробный список веб-сервера и клиентов. Р>
Я бы выбрал труп или, если бы мои потребности были очень конкретными, скрипт на python, используя библиотека PyWebDAV .
Используйте KIO под KDE:
kioclient cp file.txt 'webdavs://user@webdav.example.com:443/'
Если вам нужно загрузить весь каталог вместо одного файла через 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 вашего веб-сервера. Таким образом, он делает несколько запросов (по одному на каждый файл), и поскольку все вложенные папки были созданы заранее - эти запросы не должны завершаться сбоем.
Надеюсь, это кому-нибудь пригодится. Р>
Telerik Fiddler имеет " составить " вкладка, где вы можете создать свой собственный индивидуальный запрос WebDAV. Например. PROPFIND и опции и т. Д.