2014-07-20 172 views
0

我看了好文章 http://www.html5rocks.com/en/tutorials/file/xhr2/如何将Blob写入本地文件?

它使用HTML5文件系统API和FileWriter的实现的Blob写入到本地文件。

但是,我的浏览器Safari(当前7.0.5)不支持requestFileSystemFileWriter。 (我已经使用Chrome进行测试,但也不支持)

我也在网上搜索,但似乎没有像“正式答案”。

另一个问题是为什么阅读本地文件到浏览器很简单(使用FileReader),但写入本地文件似乎并不对称,特别是在新的html5标准中。

+1

写入本地文件带来了更多的潜在安全风险,并且还有一个更新的API。但是,强制下载一直都很有效。 – rvighne

回答

2

WebKit中(Chrome和Safari),你可以通过实际上供应商前缀使用文件系统API:

window.webkitRequestFileSystem 

而且FileWriter不直接暴露于JavaScript的反正。

对于不支持的浏览器(很多):https://github.com/eligrey/FileSaver.js将有所帮助。


你有没有考虑过用老式的方式强制下载(更兼容)?阅读Blob作为数据URI,然后将URI的内容类型更改为强制下载的值。下行:没有指定文件名和繁琐。

var reader = new FileReader; 
reader.onload = function() { 
    window.open(this.result.replace(/data:.+?\/[^;]+/, "data:application/octet-stream")); 
}; 
reader.readAsDataURL(my_blob); 
+0

我试过[FileSaver.js](https://github.com/eligrey/FileSaver.js),它没有显示像'那样的对话框。我误解任何东西吗?还是它依赖于平台? (我的Mac OS/Safari) – RedBeanPieLarry

+0

顺便说一句,我无法在本地文件系统中找到输出文件。 – RedBeanPieLarry

+0

@RedBeanPieLarry:该​​文件将在您的下载文件夹中(或取决于您的浏览器设置,系统会提示您将其保存到哪里)。除非您的浏览器本身支持API或其设置,否则无法显示文件保存对话框,导致它询问您在何处保存下载。 – rvighne

相关问题