谷歌浏览器中的HTML5保存支持

14

我正在尝试使用saveAs接口,如这里所述。

目前,我只关心谷歌浏览器,我使用最新的Canary版本(Version 27.0.1429.0 canary)

问题1:文章说:

W3C文件API包括一个FileSaver接口,它使生成数据的保存变得像saveAs(data, filename)一样简单,但不幸的是,它最终将从规范中删除。

为什么会被删除?

问题2:下面是代码。

if (window.saveAs) {
    window.saveAs(blob, name);
}else{
    console.log("saveAs not supported")
}

打印

saveAs not supported 

所以Chrome不支持saveAs。但是在阅读许多在线文章时,我并没有这样的印象。

我会立即假设,因为它会允许攻击者在用户的计算机上保存恶意文件。 - Daedalus
8
@Daedalus:即使没有saveAs()函数,仍然不是完全不可能的,只需要为此创建一个小型演示代码 http://jsfiddle.net/shivasaxena/qnYk4/3/ - Shiva
1
@Shiva - 很完美,运行得很好 - 你应该将其发布为一个替代即将被淘汰的函数。 - Robb Sadler
1
@Shiva 很好的解决方案,但也许不要设置成在单击链接时立即下载。 - perry
1个回答

9
这是一个polyfill,如文章所述。您需要加载文章中列出的JavaScript文件,将其保存在资源中并在代码中链接到它: 该存储库在此处: https://github.com/eligrey/FileSaver.js 但在Chrome中有一些限制,如果文件已保存,则新的保存名称会递增:myFile(1),然后是myFile(2)等。
我现在在Chrome上遇到了一个错误,它说无法打开文件,但这只是一个错误警告,因为文件已经被成功保存了,这才是重点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接