【问题标题】:How to make wget to save with proper file name如何使 wget 以正确的文件名保存
【发布时间】:2014-01-26 00:45:20
【问题描述】:

当我去 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

【问题讨论】:

    标签: wget


    【解决方案1】:

    在 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。)

    【讨论】:

    • 你摇滚!我首先尝试使用 curl,但意识到它不起作用,并在某个地方看到我需要它的最新版本(即 7.21.2 或更高版本)。这令人惊讶,因为看起来我只安装了最新的 CentOS 版本 6.5(最终版)的 Curl 7.19.0!我尝试再次使用 wget 与 --content-disposition 并且它完美地工作。
    【解决方案2】:

    您可以将 content-disposition 参数设置为默认激活。

    只需编辑/etc/wgetrc~/.wgetrc 文件并附加content-disposition = on

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 2011-10-11
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多