新手问题 如果在访问一个文件的 url 时触发下载的动作而不是在浏览器中打开

Awlter1 · 2019年02月27日 · 最后由 BruceDing 回复于 2019年02月27日 · 5119 次阅读

文件是存在七牛上的,link_to file.name, file.url

csv 文件在 chrome 上点击链接是下载,而 safari 是直接打开

mp4 文件在两个浏览器上都是直接打开的

有没有什么方法可以在点击链接的时候自动下载,而不是直接在浏览器里打开文件呢?

不管是用 send_file, 还是 H5 的 download tag,文件都必须得是存在自己服务器上,domain 也是自己的才行吧

https://stackoverflow.com/questions/6756416/rails-link-to-to-download-an-image-immediately-instead-of-opening-it-in-the-br/34257689

https://stackoverflow.com/questions/49736214/force-a-download-to-download-image-instead-of-opening-url-link-to-image

huobazi 回复

十分感谢,问题解决了。嗯,我思路错了,应该去看看七牛的文档

如果是存储到本地的话,可以加上 download tag 或者 sendfile,如果是七牛的链接加上 attname 参数。按照七牛的文档,如果 attname=后面不写文件名的话会按照存储的原文件名保存,但是我试下来,有时候会导致不会直接下载。如果需要统计用户下载的行为的话,可以把 url 指向自己网站的链接如 "files/visit?url=[七牛的文件下载链接]",对应的 action 可以进行统计,最后 302 重定向到七牛的文件下载链接就行了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号