2011-09-16 3 views
21

Eventuali duplicati:
How do I save a file using the response header filename with cURLCome faccio a mantenere il nome del file remoto quando il download di un file utilizzando ricciolo

Ho bisogno di scaricare molte migliaia di immagini nel formato

http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR=0

Se si incolla quel collegamento in un browser, i t cerca di scaricare un file chiamato 1.jp2

Voglio usare arricciatura per fare lo stesso. Tuttavia, quando ho eseguito

ricciolo -I 'http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR=0'

il nome del file viene segnalato come 404.txt che si può scaricare e vedere che è in realtà il file che voglio. Non riesco a utilizzare l'opzione -O perché il nome assegnato al file non è valido e ho motivi tecnici per aver bisogno del nome effettivo utilizzato nel sistema.

Come posso ottenere arricciatura per scaricare lo stesso file non ho problemi a recuperare nel mio browser? Grazie.

+0

la mia ipotesi è che questo è in qualche modo correlato all'agente utente del chiamante, anche se ho appena provato aggiungendo UA di Chrome e che non ha aiutato. –

risposta

34

[modifica] Ho cancellato i miei tentativi di modificare l'intestazione ... la soluzione era molto più semplice! [/ Modifica]

e Eureka! la soluzione è quella di utilizzare -O -J

-O, --remote-name   Write output to a file named as the remote file 
-J, --remote-header-name Use the header-provided filename 

Quindi ...

curl -O -J 'http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR=0' 

Ta Da!

Ho dovuto aggiornare il mio CURL. Avevo v 7.19 che non supporta -J ma 7.22 (che è l'ultimo) fa.

+1

@ Dr.Debel hai solo bisogno di '-J' e nessuno dei' -H' solo: 'curl -O -J 'http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR= 0'' –

-1

È possibile utilizzare l'opzione -o, vero? es.

curl 'http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR=[0-9]' -o "#1.jpg" 
+0

dice proprio nella sua domanda che non può usare -O perché non vuole che il nome del file sia showfile.exe? ... ecc. Attenzione! :) –

+0

Beh, dovresti prestare attenzione anche tu. È una piccola "o" e ha l'abilità di consentire all'utente di definire il nome del file. –

+0

l'utente non può definire il nome del file in questo caso ... viene dall'intestazione della risposta in entrata –