web-dev-qa-db-fra.com

Comment wget un fichier avec le nom correct quand redirigé?

Ainsi, après un certain temps de recherche sur Google et sur le super utilisateur (et le balayage des pages de manuel), je n’étais pas en mesure de trouver une réponse à quelque chose qui (je pense) devrait être simple:

Si vous allez ici:

http://www.vim.org/scripts/script.php?script_id=2340

Et essayez de télécharger le thème:

http://www.vim.org/scripts/download_script.php?src_id=9750

Ainsi:

wget http://www.vim.org/scripts/download_script.php?src_id=9750

Vous allez probablement vous retrouver avec un fichier appelé download_script.php?src_id=9750.

Mais je veux qu'il s'appelle molokai.vim, ce qui arriverait si j'utilisais un navigateur pour télécharger ce fichier.

Quelles options dois-je spécifier pour wget pour l'effet souhaité?

Je serais également d'accord avec une commande équivalente Curl.

113
audio.zoom
-O file
--output-document=file

Les documents ne seront pas écrits dans les fichiers appropriés, mais tous seront concaténés et écrits dans un fichier. Si - est utilisé en tant que fichier, les documents seront imprimés sur la sortie standard, désactivant la conversion de lien. (Utilisez ./- pour imprimer dans un fichier appelé littéralement -.)

Alors,

wget -O somefile.extension http://www.vim.org/scripts/download_script.php?src_id=9750

Vous pouvez également obtenir que wget résolve ce problème à l’aide de l’option --content-disposition si cette version prend en charge votre version.

wget --content-disposition http://www.vim.org/scripts/download_script.php?src_id=9750

Mises en garde selon la page de manuel,

--content-disposition

Si cette option est activée, la prise en charge expérimentale (non entièrement fonctionnelle) des en-têtes "Content-Disposition" est activée. Cela peut actuellement entraîner des allers-retours supplémentaires sur le serveur pour une requête "HEAD", et souffre de quelques bogues. C'est pourquoi il n'est pas activé par défaut à l'heure actuelle.

Cette option est utile pour certains programmes CGI de téléchargement de fichiers utilisant les en-têtes "Content-Disposition" pour décrire le nom du fichier téléchargé.

Vous pouvez obtenir le même comportement automatisé avec curl en utilisant,

curl -JLO http://www.vim.org/scripts/download_script.php?src_id=9750

-O utilise le nom distant, et -J force le -O à obtenir ce nom à partir de l'en-tête de disposition du contenu plutôt que de l'URL, et -L suit les redirections si nécessaire.

158
EightBitTony

Avec wget, vous pouvez le faire:

wget --trust-server-names <url> 

pour enregistrer le fichier en utilisant le dernier nom de fichier que le serveur vous a attribué.

73
Thi Duong Nguyen

Vous pouvez également utiliser aria2c - il semble bien fonctionner avec les en-têtes Content-Disposition.

3
dkam

Just fyi curl redirige bien, donc utiliser ce qui suit devrait fonctionner, Je pense , pour ce que vous recherchez.

curl -o molokai.vim http://www.vim.org/scripts/download_script.php?src_id=9750

0
Dan M.

A travaillé en suivant:

curl -o molokai.vim http://www.vim.org/scripts/download_script.php?src_id=9750

wget -O somefile.extension http://www.vim.org/scripts/download_script.php?src_id=9750

(changé de cas en petit, c'est-à-dire (le wget -O) en (wget -o)

0
Zahid Hussain