我正在尝试找到一种跨浏览器的方式来在HTML5中本地存储数据.我在Blob中生成了一大块数据(参见MDN).现在我想将这个Blob移动到实际的文件系统并将其保存在本地.我找到了以下方法来实现这一目标;
<a download>属性.目前仅适用于Chrome.saveAs在IE 10中引入了一个能够实现这一目标的功能.但这些似乎都不适用于Safari.虽然(1)在Chrome中工作,(2)在IE中工作,(3)在IE中工作,但没有人在Safari 6中工作.下载属性尚未实现,当尝试使用URL打开blob时,Safari会抱怨开头的URL blob:是无效的网址.
有一个很好的脚本封装了(1)和(3),称为FileSaver.js,但使用最新的Safari版本无效.
有没有办法以跨浏览器的方式在本地保存Blob?
有没有办法在Web worker和主线程之间传递大量数据(多个MB)?我在一个项目中工作,我需要下载文件,稍微修改它们,然后以某种方式让用户下载修改后的文件.我找到了以下方法在Web worker和主UI之间传递数据
postMessage方法.我认为(1)在发送较小的对象时很好,但是处理大于几MB的文件需要花费大量的时间和空间,因为它被序列化并作为JSON发送.Chrome提供了一种使用可转移对象传输数据的方法,其中不必复制数据.不幸的是,到目前为止,这只是Chrome的一项功能,因为它本来可以达到我的目的.
我发现的最后一件事是,从工作人员创建一个使用blob的URL self.webkitURL,然后只将URL引用传递给UI.这很好用,我可以将URL提供给用户,他们可以下载该文件.我遗憾的是没有找到办法在Firefox中做到这一点,是否可能?
有没有其他方法可以用来在工作者和主线程之间传输数据?