小编Eri*_*rik的帖子

使用Safari在本地下载blob

我正在尝试找到一种跨浏览器的方式来在HTML5中本地存储数据.我在Blob中生成了一大块数据(参见MDN).现在我想将这个Blob移动到实际的文件系统并将其保存在本地.我找到了以下方法来实现这一目标;

  • 使用该<a download>属性.目前仅适用于Chrome.
  • 微软saveAs在IE 10中引入了一个能够实现这一目标的功能.
  • 在浏览器中打开Blob URL并以此方式保存.

但这些似乎都不适用于Safari.虽然(1)在Chrome中工作,(2)在IE中工作,(3)在IE中工作,但没有人在Safari 6中工作.下载属性尚未实现,当尝试使用URL打开blob时,Safari会抱怨开头的URL blob:是无效的网址.

有一个很好的脚本封装了(1)和(3),称为FileSaver.js,但使用最新的Safari版本无效.

有没有办法以跨浏览器的方式在本地保存Blob?

javascript safari html5

36
推荐指数
3
解决办法
6万
查看次数

在Web worker和主线程之间传递大量数据

有没有办法在Web worker和主线程之间传递大量数据(多个MB)?我在一个项目中工作,我需要下载文件,稍微修改它们,然后以某种方式让用户下载修改后的文件.我找到了以下方法在Web worker和主UI之间传递数据

  1. 使用常规postMessage方法.
  2. 使用可传输对象(仅限Chrome)
  3. 创建一个blob的URL引用,只发送URL(在Chrome中工作,在其他工作中也是如此?)

我认为(1)在发送较小的对象时很好,但是处理大于几MB的文件需要花费大量的时间和空间,因为它被序列化并作为JSON发送.Chrome提供了一种使用可转移对象传输数据的方法,其中不必复制数据.不幸的是,到目前为止,这只是Chrome的一项功能,因为它本来可以达到我的目的.

我发现的最后一件事是,从工作人员创建一个使用blob的URL self.webkitURL,然后只将URL引用传递给UI.这很好用,我可以将URL提供给用户,他们可以下载该文件.我遗憾的是没有找到办法在Firefox中做到这一点,是否可能?

有没有其他方法可以用来在工作者和主线程之间传输数据?

javascript html5 web-worker html5-filesystem

16
推荐指数
2
解决办法
8839
查看次数

标签 统计

html5 ×2

javascript ×2

html5-filesystem ×1

safari ×1

web-worker ×1