下载大文件

拉沙德·易卜拉希莫夫

我有一个表示为块列表的文件,目标是下载所有块,加入并另存为文件。

要求

  1. 它应该适用于大文件
  2. 应该是跨浏览器的解决方案

我发现的...

  1. 使用JS数组
    是的,我们可以下载所有块并将其存储在常规Javascript数组中。
    • 这是跨浏览器的解决方案
    • 但是它使用RAM,如果文件大小超过可用内存,浏览器就会崩溃...
  2. FileSaver.js
    • 部分跨浏览器
    • 文件大小受限制
  3. StreamSaver.js
    • 不跨浏览器
    • 适用于大文件
  4. 文件系统API
    • 这是Chrome沙盒文件系统API
    • 适用于大文件

但是我仍然无法满足要求的目标...
如果某人有最佳解决方案的经验,请在这里分享。谢谢

亚历山大·奥玛拉

不幸的是,这里并没有真正的跨浏览器选项。

在Chrome中,您可以使用非标准文件系统API,也可以使用Blob (如果Blob很大,Chrome将使用该文件系统)

在Firefox中,您可以使用非标准IDBMutableFile但是,它不能与download API一起使用,因此您必须使用window.location将浏览器发送到blob URL,然后浏览器必须下载该blob URL(对于所有文件扩展名可能不会发生)。您可能还需要使用IDB持久选项,以使文件大于2GB。

在其他浏览器中,Blob是您唯一的选择。从正面看,运行浏览器的操作系统可能会使用分页,这可能会使浏览器创建大于memory的blob

诸如StreamSaver之类的基于服务人员的选项也可能会有所帮助(也许这可能是Firefox的下载API替代品),但是浏览器等待完整响应的时间有一个限制(或曾经是?),这意味着您可以可能必须下载块并将其存储在某个地方才能及时完成响应。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章