【发布时间】:2020-07-30 22:53:54
【问题描述】:
我有一个网络应用程序,它通过 FileReader API 的 readAsText() 方法对大文本文件 (> 500mb) 进行一些处理。
它多年来一直很好用,但突然间我得到了空的回复:event.target.result 是一个空字符串。
369MB 有效,但 589MB 无效。
我在多台电脑上测试过;结果相同,但它在 Firefox 中确实有效。 Chrome 一定是在最近的更新中引入了这一点。
这个bug提交了吗?
有什么解决办法吗?
【问题讨论】:
-
您意识到生成的字符串(使用 UCS-2 编码在内部存储)将超过 1GB 的内存?您需要开发一种流式处理方法,以便以较小的块处理此文件。
-
正如我所说的。直到最近,这在 Chrome 中一直运行良好。在 Firefox 中工作。
-
仅仅因为它有效并不能使它成为一种可行的方法。期望任何浏览器在缓冲 1GB 字符串时不会耗尽进程内存是不合理的。
-
您在
reader.onerror属性中遇到任何错误? -
您的文件来自哪里?你的文本文件使用什么编码? (Ps:我最近也遇到了这个问题......甚至发生在 XHR 的网络请求中)
标签: javascript google-chrome filereader