web-dev-qa-db-fra.com

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

Duplicata possible:
Comment enregistrer un fichier en utilisant le nom de fichier de l'en-tête de réponse 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=

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

Je veux utiliser curl pour faire de même. Cependant, quand je cours

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

le nom de fichier est signalé comme 404.txt que vous pouvez télécharger et voir que c'est bien le 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 puis-je obtenir curl pour télécharger le même fichier que je n'ai aucun problème à récupérer dans mon navigateur? Merci.

56
Kyle Banerjee

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

Alors...

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

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

77
Genia S.