有没有办法强制在浏览器中查看或下载附件?

Is there a way to force an attachment to be either viewed in the browser, or downloaded?

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

客户已请求以标准化方式查看这些附件,可以在浏览器中打开附件,也可以下载附件。

我已经查看了 content-disposition header 以强制下载文档,但这是否适用于所有浏览器?默认浏览器应用程序怎么样,他们不会尝试直接在浏览器中打开文件吗?

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

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

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

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

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