gpt4 book ai didi

javascript - 下载大文件

转载 作者:行者123 更新时间:2023-11-29 11:00:33 25 4
gpt4 key购买 nike

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

要求

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

我发现了什么......

  1. 使用 JS 数组
    是的,我们可以下载所有 block 并将其存储在常规 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 .但是,它不适用于 the download API ,因此您必须使用 window.location 将浏览器发送到 blob URL,然后浏览器必须下载该 blob URL(可能并非所有文件扩展名都会发生)。您可能还需要使用 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 .

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

关于javascript - 下载大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47802518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com