137 votes

Comment préserver le nom du fichier distant lors du téléchargement d'un fichier à l'aide de curl ?

Duplicata possible :
Comment enregistrer un fichier en utilisant l'en-tête de réponse filename avec cURL ?

J'ai besoin de télécharger plusieurs milliers d'images au format

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

Si vous collez ce lien dans un navigateur, il tente de télécharger un fichier nommé 1.jp2

Je veux utiliser curl pour faire la même chose. Cependant, lorsque je lance

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

le nom du fichier est indiqué comme 404.txt que vous pouvez télécharger et voir qu'il s'agit bien du fichier que je veux. Je ne peux pas utiliser l'option -O car le nom attribué au fichier n'est pas bon, et j'ai des raisons techniques d'avoir besoin du nom réel utilisé sur le système.

Comment faire pour que curl télécharge le même fichier que je n'ai aucun problème à récupérer dans mon navigateur ? Je vous remercie.

229voto

Genia S. Points 12190

La solution consiste à utiliser -O -J

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

Donc...

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

J'ai dû mettre à jour mon CURL. J'avais la version 7.19 qui ne supporte pas -J mais la 7.22 (qui est la dernière) le supporte.

-8voto

bash-o-logist Points 2088

Vous pouvez utiliser l'option -o, n'est-ce pas ? par exemple

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X