Domanda

Ho bisogno di un'utilità da riga di comando in grado di eseguire il caricamento WebDAV (HTTP PUT).

È stato utile?

Soluzione

cURL lo farà per te.

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

Altri suggerimenti

Per unix (e Windows con Cygwin installato) puoi usare Cadaver

L'utilità HTTP della riga di comando più comunemente usata sembra essere cURL , che eseguirà PUT con la sua -T opzione . Tuttavia, dovresti capire un po 'del protocollo WebDAV per fare di più che caricarlo.

WinSCP (per Windows) gratuito supporta WebDAV (e WebDAVS).
 WinSCP supporta anche operazioni di scripting / riga di comando.

Esempio di script WinSCP per caricare un file su WebDAV:

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

Salva lo script in un file (ad esempio script.txt ) ed esegui come:

winscp.com /script=script.txt

Puoi anche mettere tutto su una sola riga:

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

Inizia con introduzione allo scripting con WinSCP .

Puoi anche avere La GUI di WinSCP genera il file di script per te .

(sono l'autore di WinSCP)

questa panoramica contiene un elenco completo di server webdav e clienti.

Opterei per il cadavere o, se le mie esigenze fossero molto specifiche, uno script Python usando libreria PyWebDAV .

Un'altra opzione è " davix "

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

ha separato utility come davix-mkdir davix-put ecc Puoi specificare le credenziali nell'URL come

 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

Usa KIO sotto KDE:

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

Se è necessario caricare l'intera directory anziché un file su WebDAV, è possibile utilizzare il seguente approccio.

Immagina di avere la seguente cartella locale che caricherai su WebDAV.

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

1. Innanzitutto è necessario creare directory nidificate dalla cartella locale (se presente) su un server. Poiché WebDAV non supporta il caricamento ricorsivo, devi farlo in un passaggio separato ( se dovessi utilizzare ftp - dovresti aggiungere il flag --ftp-create-dirs per farlo). Per creare tali cartelle su WebDAV è necessario utilizzare metodo 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'

Si noti che non è possibile crearli in una richiesta in base a alla specifica .

  

se viene effettuata una richiesta per creare la raccolta / a / b / c / d /, e   / a / b / c / non esiste, la richiesta deve fallire.

2.Secondo è possibile utilizzare l'output di trova comando shell per caricarlo sul tuo server usando curl .

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

Il codice sopra scorre ciclicamente su tutti i tuoi file all'interno della directory specificata (usando find) e aggiungi l'output (nome file con percorso relativo) al segnaposto {} nell'URL del tuo server web. Quindi effettua più richieste (una per ogni file) e poiché tutte le cartelle nidificate sono state create in anticipo, tali richieste non dovrebbero fallire.

Spero che sia utile a qualcuno.

Telerik Fiddler ha un "compose" scheda in cui è possibile creare il tuo propria richiesta WebDAV personalizzata. Per esempio. PROPFIND e OPZIONI ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top