下载大文件

Download big files

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

要求

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

我发现了什么...

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

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

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

在 Chrome 中,您可以使用非标准文件系统 API 或 Blob which Chrome will use the file-system for if the blob is large

在 Firefox 中,您可以使用 the non-standard IDBMutableFile. However, it will not work with the download API, so you would have to use window.location to send the browser to the blob URL, which the browser must then download (may not happen for all file extensions). You also may need to use the IDB persistent option 使文件大于 ~2GB。

在其他浏览器中,Blob 是您唯一真正的选择。从好的方面来说,the OS the browser runs on may use paging which could enable the browser to create blobs larger than memory.

基于服务工作者的选项,如 StreamSaver 也可能有所帮助(也许这可能是 Firefox 的下载 API 替代方案),但是 there is (or was?) a limit to how long the browser will wait for a complete response,这意味着您可能必须下载并存储某处的块以及时完成响应。