当我去ISC here下载BIND时,我的浏览器会自动正确保存下载的文件。例如,如果我点击9.9.4-P2的下载按钮,它会弹出一个窗口,如果我点击右边的“BIND 9.9.4-P2 - tar.gz”按钮,浏览器会自动保存下载文件为“bind-9.9.4-P2.tar.gz”。
然而,我要做的是通过Linux上的wget下载它。所以我右键单击“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
答案 0 :(得分:14)
在HTTP级别,服务器将文件名信息发送到HTTP响应中Content-Disposition
标头字段中的客户端:
HTTP/1.1 200 OK
[…]
Content-Disposition: attachment; filename="bind-9.9.4-P2.tar.gz";
有关Content-Disposition
标题字段的详细信息,请参阅RFC2183。
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
。)
答案 1 :(得分:8)
您可以将content-disposition参数设置为默认激活。
只需修改/etc/wgetrc
或~/.wgetrc
文件并附加content-disposition = on