Pergunta

Eu preciso de um utilitário de linha de comando que pode fazer WebDAV upload (HTTP PUT).

Foi útil?

Solução

cURL vai fazer isso por você.

curl -T filetoput.xml http://www.url.com/filetoput.xml

Outras dicas

Para UNIX (e Windows com Cygwin instalado) você pode usar cadáver

O utilitário de linha de comando HTTP mais comumente usado parece ser cURL , que vai fazer PUT com a sua < a href = "http://curl.haxx.se/docs/manpage.html#-T" rel = "nofollow noreferrer"> - T opção . Você precisaria entender um pouco do protocolo WebDAV para fazer mais do que carregar com ele, no entanto.

WinSCP (para Windows) suporta WebDAV (e webdavs).
WinSCP suporta operações de script / de linha de comando também.

roteiro WinSCP exemplo para fazer upload de um arquivo através de WebDAV:

open https://user@webdav.example.com/
put file.txt /path/
exit

Salvar o script para um arquivo (por exemplo script.txt) e correr como:

winscp.com /script=script.txt

Você também pode colocar tudo em uma única linha:

winscp.com /command "open https://user@webdav.example.com/" "put file.txt /path/" "exit"

Comece com introdução ao script com WinSCP .

Você pode até ter WinSCP GUI gerar o arquivo de script para você .

(eu sou o autor de WinSCP)

esta visão geral contém uma lista detalhada sobre o servidor WebDAV e clientes.

Eu optar por cadáver ou, se as minhas necessidades eram muito específico, um script python usando o PyWebDAV biblioteca.

Outra opção é "Davix"

https://dmc.web.cern.ch/projects/davix/home

que se separou utils como Davix-mkdir Davix-put etc Você pode especificar creditions na URL como

 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

Use KIO no KDE:

kioclient cp file.txt 'webdavs://user@webdav.example.com:443/'

Se você precisar fazer upload de todo o diretório em vez de um arquivo de mais de WebDAV, você pode usar a seguinte abordagem.

Imagine que você tem a seguinte pasta local que você vai fazer upload de mais de WebDAV.

local_folder_to_upload
│   test.txt
│   test1.txt    
│
└───nested_folder1
│   │   file1.txt
│   │   file2.txt
│   │
│   └───nested_folder2
│       │   file11.txt
│       │   file12.txt

1.Primeiro você precisa criar diretórios aninhados de sua pasta local (se os tiver) em um servidor. Desde WebDAV não suporta carregamento recursivo, você tem que fazer isso na etapa separada ( se você fosse usar ftp - você acrescentaria bandeira --ftp-create-dirs para fazer isso). Para criar essas pastas mais de WebDAV você precisa usar MKCOL método .

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'

Por favor, note que você não pode criá-los em uma solicitação de acordo com com a especificação .

Se uma solicitação para criar coleção / a / b / c / d / é feita, e / A / b / c / não existe, o pedido deve falhar.

2.Segundo você pode utilizar a saída de encontrar comando shell para enviá-lo para seu servidor usando curl.

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

código acima loop sobre todos os seus arquivos dentro de determinado diretório (usando find) e adicionar a saída (nome do arquivo com o caminho relativo) ao {} espaço reservado na URL do seu servidor web. Por isso, faz várias solicitações (uma por cada arquivo), e uma vez que todas as pastas aninhadas foram criadas com antecedência -. Esses pedidos não devem falhar

A esperança é útil a alguém.

Telerik Fiddler tem uma guia "compor", onde você pode criar seu próprio pedido WebDAV personalizado. Por exemplo. PROPFIND e opções etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top