【问题标题】:Is there a way to force an attachment to be either viewed in the browser, or downloaded?有没有办法强制在浏览器中查看或下载附件?
【发布时间】:2019-02-06 06:15:14
【问题描述】:

在我们的跨浏览器网络应用程序中,客户端可以上传不同的文件类型(.pdf、.eml、.jpg 等)。

客户端已请求通过在浏览器中打开或下载附件的标准化方式来查看这些附件。

我查看了content-disposition 标头来强制下载文档,但这是否适用于所有浏览器?默认浏览器应用呢,他们不会尝试直接在浏览器中打开文件吗?

【问题讨论】:

    标签: c# jquery html download attachment


    【解决方案1】:

    根据https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition#Browser_compatibility content-disposition 响应头兼容所有浏览器。因此,如果您需要强制下载,请使用 Content-Disposition: attachment (并且该文件将始终被下载)。建议同时指定文件名,可能还有内容类型:

    Content-Disposition: attachment; filename="filename.jpg"
    Content-Type: image/jpg
    

    如果您跳过标题,或者只使用 content-disposition:inline,那么浏览器将尝试以内联方式打开文件。

    【讨论】:

    • 我很高兴看到文档表明需要标准的跨浏览器行为。但是,如果客户端决定使用 inline 选项,但没有默认应用程序来查看附件,例如。 .eml 文件,浏览器会如何反应?
    • 据我所知,如果浏览器打不开文件,会提示用户下载。您可以使用您的浏览器对其进行测试:使用非标准扩展名和内容类型 application/octet-stream (从您的服务器)打开一个内联文件
    【解决方案2】:

    对于这些情况,我使用标签上的下载属性。

    <a href='./download-file.pdf' download='Name of File for user'>Click me to download</a> 
    

    【讨论】:

      猜你喜欢
      • 2010-11-28
      • 2013-02-21
      • 2015-12-09
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多