Мне нужна утилита командной строки, которая может выполнять загрузку WebDAV (HTTP PUT).
Утилита командной строки для загрузки WebDAV
Ответы (9)
cURL сделает это за вас.
curl -T filetoput.xml http://www.url.com/filetoput.xml
curl -T <filename> -u <username>:<password> <url>
.
- person Amos M. Carpenter; 03.06.2015
-o /dev/stdout
для получения вывода прогресса
- person simao; 09.10.2015
Наиболее часто используемой HTTP-утилитой командной строки является cURL, которая будет выполнять PUT
с ее -T вариант. Однако вам нужно немного понимать протокол WebDAV, чтобы делать с ним больше, чем просто загружать файлы.
Если вам нужно загрузить весь каталог вместо одного файла через 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. Во-вторых, вы можете использовать вывод найти команду оболочки, чтобы загрузить ее на ваш сервер, используя curl
.
cd local_folder_to_upload && find . -exec curl -T {} 'http://your.server/uploads/{}' --user 'name:pwd' \;
Код выше перебирает все ваши файлы в заданном каталоге (используя find) и добавляет вывод (имя файла с относительным путем) в заполнитель {}
в URL-адресе вашего веб-сервера. Таким образом, он делает несколько запросов (по одному на каждый файл), и, поскольку все вложенные папки были созданы заранее, эти запросы не должны завершаться ошибкой.
Надеюсь, кому-то это будет полезно.
Бесплатный WinSCP (для Windows) поддерживает WebDAV (и WebDAVS).
WinSCP также поддерживает сценарии и операции командной строки. .
Пример сценария WinSCP для загрузки файла через WebDAV:
open https://[email protected]/
put file.txt /path/
exit
Сохраните скрипт в файл (например, script.txt
) и запустите так:
winscp.com /script=script.txt
Вы также можете поместить все в одну строку:
winscp.com /command "open https://[email protected]/" "put file.txt /path/" "exit"
Начните с введения в создание сценариев с помощью WinSCP.
Вы даже можете настроить графический интерфейс WinSCP для создания файла сценария.
(я автор WinSCP)
Другой вариант — «Дэвикс».
https://dmc.web.cern.ch/projects/davix/home
он имеет отдельные утилиты, такие как davix-mkdir davix-put и т. д. Вы можете указать кредиты в URL-адресе, например
davix-mkdir http://user:[email protected]/dir_to_create
davix-put local_file http://user:[email protected]/dir_to_create/remote_file_name
этот обзор содержит полный список серверов и клиентов webdav.
Я бы выбрал труп или, если мои потребности были очень конкретными, скрипт Python, использующий библиотека PyWebDAV.
Используйте KIO в KDE:
kioclient cp file.txt 'webdavs://[email protected]:443/'
Teleric Fiddler имеет вкладку «Создать», где вы можете создать свой собственный запрос WebDAV. Например. PROPFIND и ВАРИАНТЫ и т.д.