js通过 URL下载文件

页面上一个button,点击之后触发一个function去请求数据,返回 pdf/epub 的URL,然后下载这个文件.

本来是直接用 a 写的,href里放资源地址,target设为'_blank'效果良好.但这样所有的资源都会直接暴露而且不方便统计,所以就换用上面的方式.

  1. js构造a标签,js触发click.不加_blank是可以的,但会替换掉原来整个页面.加了_blank chrome就拦截,Safari无效果.

  2. 用iframe,src填入资源地址. 但这样Safari无效果. 且,如果是MP4/pdf这样的文件浏览器并没有下载而是直接打开.

  3. window.open 被拦截

最想要的效果是点击下载按钮,原页面无改动无刷新,直接下载资源.移动版在新页面下载,触发下载自动关闭新页面.

请问上面方法要怎么改才能满足需求呢?谢谢啦

阅读 11.4k
2 个回答

谢邀。你自己基本都把方法与思路想好了,这个涉及到浏览器或者系统的安全限制等原因,模拟点击等都不能实现。所以建议还是直接使用你提到的第一种方式,但你说不方便统计是指什么?统计下载或者做权限下载你可以使用动态链接

<a href="url 302到下载地址" download>下载</a>
  1. url里统计,然后重定向的下载链接

  2. 添加 download 属性,这个属性可以指定下载文件名。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题