有一个超链接,你将它链接到一张图片,比如说这样:
(代码如下)
- <a href="https://www.baidu.com/img/bd_logo1.png" target="_blank">点我点我!</a>
直接点击这个超链接一般浏览器会直接在窗口中打开这张图片(我这里是加了插件,所以是在图片灯箱中显示的)
那么,如果我想实现点击这个链接,直接弹出下载这张图片,该怎么做呢?
之前在做 MKOnlineMusicPlayer 的时候就遇到了类似的问题:为了实现音乐直接点击下载而不是在浏览器中打开,我的做法是用 PHP 在后台读取音乐文件,再加上 Content-Type: application/force-download 这个文件头实现弹出下载。这样做无疑加重了服务器的负担。
今天在“闲逛”之余无意间发现 a 标签居然有个 download 属性!
定义和用法
download 属性规定被下载的超链接目标。
在 a 标签中必须设置 href 属性。
该属性也可以设置一个值来规定下载文件的名称。所允许的值没有限制,浏览器将自动检测正确的文件扩展名并添加到文件 (.img, .pdf, .txt, .html, 等等)。
使用示例
- <a href="https://www.baidu.com/img/bd_logo1.png" target="_blank" download="百度logo">点我点我!</a>
这下点击链接就能实现直接弹出下载了!
要是到这里结束就好了,然而……
只有 Firefox 和 Chrome 支持 download 属性。所以要想实现全浏览器兼容还是得使用在服务器进行“中转”的办法 [晕]
参考资料
HTML a download 属性 http://www.w3school.com.cn/tags/att_a_download.asp
本文作者为mengkun,转载请注明。
Chrome还有一个“bug”,download标签是可以指定文件下载的名字的,但是Chrome的处理是,如果后端已经指定了文件的名字,前端的规定无效。。。
@3van原来是这样……难怪说有时会失效……
已阅
这个还是看不懂
这个还看不懂
@星空游戏基础的 HTML 知识 [wb_二哈]