【问题标题】:How can I get browsers to download an exe instead of opening it in the browser window?如何让浏览器下载 exe 而不是在浏览器窗口中打开它?
【发布时间】:2009-10-02 20:26:51
【问题描述】:

我有一个网站,我想让浏览器用户下载一个 exe。

我正在使用一个非常简单的 HTML 文件对其进行测试,我使用“文件>打开”将其加载到 Web 浏览器中。 “身体”看起来像这样:

<body>
<a href="http://www.example.com/myprogram.exe" target="_self">click to download exe</a>
<a href="http://www.example.com/myprogram.zip" target="_self">click to download zip</a>
</body>

问题是这样的:当我单击第一个链接(myprogram.exe)时,浏览器(IE8 和 FireFox)将 myprogram.exe 直接流式传输到浏览器窗口:我看到了很多二进制文件。

当我单击第二个链接 (myprogram.zip) 时,浏览器会询问我是否要打开文件或将其保存到磁盘,这正是 .exe 的预期结果。

这是导致这种奇怪行为的唯一 .exe 下载。我经常下载.exe,浏览器总是问我是打开文件还是保存到磁盘。

是否需要在网站本身、主机或...上进行设置?

【问题讨论】:

  • 如果您从文件系统打开(文件>打开)html 文档(即使用文件协议),根据定义,您就没有您所说的网站。
  • 嗯,不完全正确:您看到我的测试 html 文档未托管在网站上是正确的,但我尝试下载的文件位于网站上。
  • 如果浏览器要下载文件,为什么要设置目标元素?

标签: html download exe


【解决方案1】:

您需要更正您的网络服务器发送的内容类型。听起来它声称数据是text/plain。我的 mime.types 文件建议 exe 文件应该是 application/x-msdos-program

如果您使用的是 Apache,请参阅 http://httpd.apache.org/docs/1.3/mod/mod_mime.html#addtype(或您使用的版本的手册中的类似页面)。

【讨论】:

    【解决方案2】:

    您需要设置Content-Disposition HTTP header

    更新:HTTP 标头通常在 Web 服务器中控制,例如 Apache。

    正如另一张海报提到的,如果服务器发送正确的Content-Type header,大多数浏览器应该自动下载.exe 文件作为附件。如何做到这一点因服务器而异。这是一篇关于setting MIME types (another name for content-type) in IIS 的文章。在 Apache 中,通常通过编辑 TypesConfig directive 指向的文件来完成。

    【讨论】:

    • 感谢您的快速答复。很抱歉我昏暗了,但是如何在我的 HTML 页面中做到这一点?
    • 您必须配置您的网络服务器以发送与.exe-extension 关联的正确标头。如何做到这一点,取决于您的网络服务器。
    • 您不需要设置 content-disposition 标头,如果设置了正确的内容类型,浏览器应该对可执行文件执行正确的操作。
    • 我同意,大卫。在所有不应该在浏览器窗口中打开的文件类型中,我应该想象 .exe 会非常接近列表的顶部。为什么他们乐于以预期的方式处理 .zip,而不是 .exe。也许那里有一个很好的答案? ...
    • 嗨,彼得。您是否检查过服务器发送的标头?您可能可以通过使用curl -i $uri_for_your_exe 看到这些如果它没有发送正确的Content-Type 和/或Content-Disposition 标头,您需要进行一些服务器配置。
    【解决方案3】:

    看到这个

    How To Raise a "File Download" Dialog Box for a Known MIME Type

    当您从 Web 服务器提供文档时,您可能希望立即提示用户将文件直接保存到用户的磁盘,而不用在浏览器中打开它。但是,对于已知的 MIME(多用途 Internet 邮件扩展)类型,例如 Microsoft Word(“application/ms-word”),默认行为是在 Internet Explorer 中打开文档。

    您可以使用 content-disposition 标头来覆盖此默认行为。其格式为:

    内容配置:附件; 文件名=fname.ext

    【讨论】:

      【解决方案4】:

      最后它需要 AddType application/x-octet-stream exe 正在应用中。

      感谢所有向我指出这一点的回答者。

      【讨论】:

        猜你喜欢
        • 2012-08-18
        • 2012-06-14
        • 2013-10-25
        • 2022-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多