Question Comment créer un fichier avec un nom correct lors de la redirection?


Donc après un certain temps de recherche sur Google et Super User (et en analysant les pages de manuel), je n'ai pas pu trouver de 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 se passerait 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.


92
2018-06-23 11:44


origine




Réponses:


-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é comme fichier, les documents seront imprimés sur la sortie standard, désactivant la conversion des liens. (Utilisation ./- imprimer sur un fichier littéralement nommé -.)

Alors,

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

Ou vous pourriez être en mesure d'obtenir wget pour résoudre ce problème, utilisez l'option --content-disposition si elle est prise en charge par 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 entraîner des allers-retours supplémentaires vers le serveur pour une requête "HEAD", et est connu pour souffrir de quelques bogues, ce qui explique pourquoi il n'est actuellement pas activé par défaut.

Cette option est utile pour certains programmes CGI de téléchargement de fichiers utilisant des en-têtes "Content-Disposition" pour décrire le nom d'un 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 pour obtenir ce nom de l'en-tête de disposition de contenu plutôt que l'URL, et -L suit les redirections si nécessaire.


139
2018-06-23 12:03



Je devrais avoir spécifié que cela doit être automatique - audio.zoom
Si je comprends bien, wget s'appuie sur la page Web pour l'informer correctement si l'URL pointe vers un fichier et doit être enregistré avec quelque chose de différent, en utilisant l'en-tête de disposition du contenu, que wget peut ou non prendre en charge. Donc, vous ne pouvez pas le faire automatiquement avec wget. Curl peut avoir plus ou moins de succès en fonction de la page Web. - EightBitTony
le fait est de pouvoir écrire ces choses sans analyse compliquée, curl est bien mais jusqu'à présent, je n'ai pas été en mesure de collecter des options décentes pour cela soit - audio.zoom
Aha - Je me trompe, voir la réponse mise à jour. C'est pourquoi les sites stackexchange fonctionnent bien - tout le monde apprend quelque chose, même les personnes qui répondent aux questions! - EightBitTony
Cela a fonctionné pour moi pour le podcast de stackexchange, qui m'embêtait depuis un moment. Merci. - Richard Campbell


Avec wget, vous pouvez faire ceci:

wget --trust-server-names <url> 

pour enregistrer le fichier en utilisant le dernier nom de fichier que le serveur vous donne.


69
2018-06-29 05:08



Je me demande quelle est la différence entre --trust-server-names et --content-disposition - JamesTheAwesomeDude
Ressemble à --trust-server-names suit les redirections vers un fichier différent, et --content-disposition nomme le fichier avec le nom spécifié dans l'en-tête de réponse sans aucune redirection requise. - Asfand Qazi
Pourquoi cette fonctionnalité par défaut n'est-elle pas?!?! - hopeseekr
@hopeseekr Le serveur peut être méchant et appeler le fichier .bashrc si vous ne surveillez pas attentivement. lists.gnu.org/archive/html/bug-wget/2012-04/msg00059.html - Patrick Conheady


Vous pouvez aussi utiliser aria2c - il semble fonctionner correctement avec les en-têtes Content-Disposition.


2
2018-01-24 03:32





Juste 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
2018-06-23 12:39





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é la casse en plus petit c'est-à-dire (le wget -O) à (wget -o)


0
2018-02-15 06:44