HTML a 标签的 download 属性

mengkun 2,240 6

有一个超链接,你将它链接到一张图片,比如说这样:

点我点我!

(代码如下)

  1. <a href="https://www.baidu.com/img/bd_logo1.png" target="_blank">点我点我!</a>

直接点击这个超链接一般浏览器会直接在窗口中打开这张图片(我这里是加了插件,所以是在图片灯箱中显示的)

HTML a 标签的 download 属性

那么,如果我想实现点击这个链接,直接弹出下载这张图片,该怎么做呢?

之前在做 MKOnlineMusicPlayer 的时候就遇到了类似的问题:为了实现音乐直接点击下载而不是在浏览器中打开,我的做法是用 PHP 在后台读取音乐文件,再加上 Content-Type: application/force-download 这个文件头实现弹出下载。这样做无疑加重了服务器的负担。

今天在“闲逛”之余无意间发现 a 标签居然有个 download 属性!

定义和用法

download 属性规定被下载的超链接目标。

在 a 标签中必须设置 href 属性。

该属性也可以设置一个值来规定下载文件的名称。所允许的值没有限制,浏览器将自动检测正确的文件扩展名并添加到文件 (.img, .pdf, .txt, .html, 等等)。

使用示例

  1. <a href="https://www.baidu.com/img/bd_logo1.png" target="_blank" download="百度logo">点我点我!</a>  

这下点击链接就能实现直接弹出下载了!

HTML a 标签的 download 属性

要是到这里结束就好了,然而……

只有 Firefox 和 Chrome 支持 download 属性。所以要想实现全浏览器兼容还是得使用在服务器进行“中转”的办法 [晕]

参考资料

HTML a download 属性 http://www.w3school.com.cn/tags/att_a_download.asp

打赏
发表评论
表情 图片 链接

  1. 3van
    3van Lv 1

    Chrome还有一个“bug”,download标签是可以指定文件下载的名字的,但是Chrome的处理是,如果后端已经指定了文件的名字,前端的规定无效。。。

    • mengkun
      mengkun 站长

      @3van原来是这样……难怪说有时会失效……

  2. 雷锋
    雷锋 Lv 1

    已阅

  3. 星空游戏

    这个还是看不懂

  4. 星空游戏

    这个还看不懂