web-dev-qa-db-fra.com

Forcer wget à utiliser le nom de fichier réel

Lorsque vous utilisez wget dans un script pour télécharger des fichiers à partir de Google Docs, le nom du fichier n'est pas conservé. Par exemple:

wget 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls' 

enregistre le fichier sous le nom pub?key=pyj6tScZqmEfbZyl0qjbiRQ au lieu de indicatorhivestimatedprevalence15-49.xls, ce que je reçois si je clique sur le lien dans un navigateur. Existe-t-il un moyen d'appliquer ce comportement "semblable à un navigateur" dans wget?

50
Chinmay Kanchi
wget --content-disposition 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls'

fera le tour pour vous.

Il n’a toujours pas été complètement implémenté et semble parfois dérégler un peu, c’est donc l’option par défaut de wget, utilisez-la à vos risques et périls.

90
Bruno Pereira

Vous pouvez essayer d'utiliser curl pour télécharger et conserver le nom de fichier d'origine:

curl -OJL ${your_url}
  • -O pour nom-distant
  • -J pour remote-header-name
  • -L pour l'emplacement

voir options de ligne de commande curl .

3
Noam Manos

Le lien Google Documents indique réellement à un script sur le serveur de s'exécuter, en l'analysant dans le fichier souhaité. À ma connaissance, le fichier n'existe pas encore sur le serveur sous la forme els, mais il est généré au moment de l'exécution lorsque vous le demandez. Ainsi, il n'y a rien pour wget à obtenir.

Pour télécharger le fichier, vous devez utiliser l'API Google http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#DownloadingDocs/ .

0
Ethan