让HTML/JavaScript链接指向PDF文档,仅可下载。

3

如何在我的网站上链接一个pdf文件,只让用户下载,而不是在浏览器中显示这个PDF?

2个回答

4
你可以设置响应头来提示浏览器保存文件:
 Content-disposition: attachment; filename=whatever.pdf

在实际操作中,如何实现这一点取决于您的Web服务器和/或编程环境。然而,试图使用JavaScript完成此操作可能不是正确的方法。

其他选项包括欺骗浏览器,使其认为该文件实际上不是PDF,方法是将content-type设置为application/octet-stream或类似内容。这通常是被采用的方法,但是否明智则存在争议。


谢谢。有很多人建议使用MIME,让我担心这是唯一的方法! - Kristian Glass

4
HTTP响应内容的处理行为最终由浏览器决定,而不是服务器。但是,您可以使用content-disposition header建议将响应内容视为“文件”,并建议一个名称来保存该文件。
请注意,HTTP协议实际上并没有以大多数人推断的方式传输“文件”。它传输带有相关标头的内容。因此,您所做的一切都是通过伴随内容的这些标头完成的。
编辑:我刚注意到您的标签...您是在谈论提供下载文件还是链接到其他地方提供的文件?如果是后者,那么我很确定它超出了您的控制范围。您的JavaScript可能可以控制请求标头的内容,但响应标头完全取决于服务器。

我在一个HTML页面上有这个代码:<a href="a.pdf">下载</a>,我希望用户点击它后只会下载PDF文件。 - michele
@michele:那么你可能没有什么办法了。(如果有人能纠正我,我很乐意学习。)在这种情况下,你所做的,也是你所能做的,就是指示浏览器请求指定的资源。服务器如何响应并不在你从浏览器中控制之内。这里的标准方法是包含指示用户右键点击并选择“另存为”的说明。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接