前端如何实现http路径的pdf文件下载?

如题,现在服务端有一个http://xxxx.pdf的文件
刚开始想的简单用a标签或location.href直接下载,chrome测试只能打开pdf文件预览不能下载
网上搜索后发现a标签有download属性,满心欢喜加上后仍只能打开浏览
请想问下有什么办法可以直接下载文件?
(我是在本地打开的页面,地址是127.0.0.1,和pdf文件地址不一样,难道是跨域让download属性不生效吗)

阅读 18.3k
6 个回答

直接通过a标签浏览器默认的解析行为无法控制,只能通过响应头来控制浏览器以何种模式解析。返回资源的响应头Content-disposition: attachment; filename=文件名.pdf

众说纷纭,不过location.href已经蛮好用的了。预览了之后,右上角有打印图标,点保存就下载了。这个得和客户谈!

如果浏览器能够解析的情况下,貌似都会直接浏览,而不是下载,除非是浏览器识别不出来的文件才会弹出下载 .. ,也有些浏览器支持 download 属性。

这个东西我感觉需要后端来做比较靠谱,后端设置响应头(假设后端是 php 语言)即可:

// 设置文件类型
header('Content-type: application/pdf');
// 通知浏览器,该内容作为附件下载,文件名为 download.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// 打印文件内容
readfile('original.pdf');

跳转 window.loaction.href

看浏览器吧
有的支持download的 用download
有的不识别pdf的 用跳转
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题