【问题标题】:How to load large local files using JavaScript?如何使用 JavaScript 加载大型本地文件?
【发布时间】:2019-04-13 17:42:16
【问题描述】:

有没有办法在 JavaScript 中本地处理非常大的文件(如 2GB 及以上)而不会使浏览器崩溃?

*我知道输入标签和 FileReader API,但似乎没有像 Node.js 流这样的东西。

【问题讨论】:

  • 你打算用这个文件做什么?只是好奇。
  • 目前这主要是对未来发展的假设,但我想问这个问题的原因是因为想从我的谷歌数据转储中提取数据。显然,我将使用它的任何类型的功能都是一次提取少量数据,例如“查找我在特定位置的所有日期”。
  • 你有什么理由要求 js 在服务器端觉得微不足道的工作下紧张?
  • @lucas 没有网络上传,因此可以降低数据成本 + 可以在慢速网络环境中完成。用户可以分担处理负担,而不是让服务器所有者负担使用该服务的每个人的负担。不喜欢将私人数据上传到外部服务器。
  • 您可以将长时间运行的任务(在本例中为大文件处理)卸载到 Web Workers (developer.mozilla.org/en-US/docs/Web/API/Worker)。 Web Worker 在另一个线程(上下文)中运行,因此它不会阻塞您的主线程(浏览器)

标签: javascript file blob local filereader


【解决方案1】:

FileReader 使您能够异步读取文件的内容。对于大文件(在您的情况下为 2GB),您可以使用函数/方法 FileReader.readAsArrayBuffer() 来读取内存中文件的某个块大小,因此这不会使您的浏览器崩溃,这个 blog 是一个很好的例子.

【讨论】:

  • 这里重要的部分是Blob的slice()方法。如果您将太大的 Blob 传递给 readAsArrayBuffer,它只会使浏览器崩溃。
猜你喜欢
  • 1970-01-01
  • 2011-04-23
  • 2021-11-02
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
相关资源
最近更新 更多