2014-01-26 5 views
2

Когда я пошел в ISC here, чтобы загрузить BIND, мой браузер автоматически сохранит загруженный файл правильно. Например, если я нажму кнопку «Загрузить» для 9.9.4-P2, откроется окно, и, если я нажму кнопку «BIND 9.9.4-P2-tar.gz» справа, браузер автоматически сохранит загруженный файл как «bind-9.9.4-P2.tar.gz».Как сделать wget для сохранения с правильным именем файла

Однако то, что я пытаюсь сделать, это загрузить его через wget в Linux. Поэтому я нажимаю на кнопку «BIND 9.9.4-P2 - tar.gz» и копирую ссылку «https://www.isc.org/downloads/file/bind-9-9-4-p1-tar-gz/?version=tar.gz».

Теперь, когда я выпустил следующую команду, он сохранил бы ее как «index.html? Version = tar.gz». Теперь я понимаю, что могу дать ему опцию -O и явно указать имя сохраненного файла, но есть ли способ сделать это автоматически аналогично тому, как это делает мой браузер?

wget https://www.isc.org/downloads/file/bind-9-9-4-p1-tar-gz/?version=tar.gz 

ответ

10

На уровне HTTP сервер отправляет информацию имя файла для клиента в поле Content-Disposition заголовка в ответе HTTP:

HTTP/1.1 200 OK 
[…] 
Content-Disposition: attachment; filename="bind-9.9.4-P2.tar.gz"; 

См RFC2183 подробную информацию о поле в Content-Disposition заголовка.

wget имеет экспериментальную поддержку этой функции в соответствии с его страницы руководства:

--content-disposition 
     If this is set to on, experimental (not fully-functional) support for 
     "Content-Disposition" headers is enabled. This can currently result in 
     extra round-trips to the server for a "HEAD" request, and is known to 
     suffer from a few bugs, which is why it is not currently enabled by 
     default. 

Так что, если вы решили включить его, просто указать опцию --content-disposition. (Вы также можете использовать curl сделать работу вместо wget, но вопрос был о wget.)

+0

Вы рок! Сначала я попытался использовать curl, но понял, что он не работает, и увидел где-то мне последнюю версию (т.е. 7.21.2 или новее). Это удивительно, так как похоже, что у меня есть только Curl 7.19.0 с последней версией CentOS 6.5 (Final)! Я попытался использовать wget снова с -content-disposition, и он работал безупречно. – user192702

8

Вы можете установить параметр Content-Disposition, который будет активирован по умолчанию.

Просто отредактируйте файл /etc/wgetrc или ~/.wgetrc и добавить content-disposition = on

Смежные вопросы