Content-Disposition headers 允许下载和打开文件

Content-Disposition headers to allow both download and open file

我有一些文件,我希望人们能够根据需要在浏览器中下载或查看这些文件。 我不知道如何简单地做到这一点,在主机中设置 headers 或做一些 javascript 魔术。

最终结果应该是一个 html 页面,每个文件列出 2 link 秒,一个用于在新选项卡中打开,一个用于下载文件。我可以得到一个,或另一个但不能同时工作。

我尝试了两个 Content-Disposition 选项,它们都可以工作,但不能同时进行。 我尝试了 chrome.downloads api 但它在普通 html 脚本中不可用。 我试过 this 但它下载了一个包含 link 本身的文本文件,而不是文件内容。 Content-Disposition headers 忽略下载属性,默认为内联,所以即使不设置也强制打开,不允许下载。

Content-Disposition: inline
Content-Disposition: attachment
<a href="test.txt" download="text.txt" target="_blank">

谁能发现我做错了什么?

Content-Disposition header 需要由 服务器 发送,我相信在你的情况下它只能在给定文件中出现一次响应(在您的情况下,您只发送一个文件,而不是包含多个文件的多部分表单数据)。毕竟,它是向用户代理建议应该如何处理该文件。要实现您的链接,您需要两个单独的 URL(如果有 server-side 脚本,区别可以是查询字符串):一个提供 Content-Disposition: inline 响应,另一个提供 Content-Disposition: attachment; filename="text.txt" 响应。如果您这样做,这些链接应该可以在任何现代浏览器中使用。

遗憾的是,似乎没有任何方法可以只用 headers 来做到这一点,我需要编写一些脚本。