如何将Blob写入本地文件?

时间:2014-07-20 02:45:04

标签: javascript html html5

我读过这篇好文章 http://www.html5rocks.com/en/tutorials/file/xhr2/

它使用HTML5 FileSystem API和FileWriter实现将Blob写入本地文件。

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

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

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

1 个答案:

答案 0 :(得分:2)

在webkit(Chrome和Safari)中,您实际上可以通过供应商前缀使用FileSystem 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);