web 另类方法实现“另存为”功能
2013-05-31 by Dron
HTML5 的 FileReader 带给我们很强大的文件只读访问能力,可是在 HTML5 新增的 JS 中却没有发现有方便的另存到本地文件的相关 API,以往的办法要么调用浏览器的 save as 命令(兼容程度不详),要么将内容提交到服务器,由服务器附加 content-type: application/octet-stream 头并原文打回来实现。
偶然间,发现 HTML5 的 <a>
标签有了一个新属性,叫 download
,取值是一个文件名,当一个带有 download
属性的 <a>
链接被点击时,其形为不再是一个网页跳转,而变成将目标以指定的文件名另存到本地,兼容性还不错的样子。
<a>
的 href
值是可以随便改的,也就是说要另存的文件内容可以通过 JS 的方式轻松生成,对其指定一个 DataURI
就可以决定要保存的文件内容了,配合 Base64
,甚至可以产生一个二进制文件!
原理简单,实现无比容易,就不在这儿贴代码了,戳我可以看看 live demo。