【发布时间】:2019-03-28 02:36:34
【问题描述】:
我正在通过以下方式将文件作为数组缓冲区读取:
reader.readAsArrayBuffer(myFile);
然后我将使用该数组缓冲区并尝试通过以下方式创建 Uint8Array:
reader.onload = e => {
let arrayBuffer = new Uint8Array(e.target.result, 0,
e.target.result.byteLength);
我也试过了:
let arrayBuffer = new Uint8Array(e.target.result);
在这两种情况下,当我上传字节长度为 198873088 的文件时,它都可以正常工作。但是,当我尝试更大的 1564725248 文件时,我在第一种情况下得到以下信息:
Invalid typed array length: 1564725248
在第二种情况下:
Invalid typed array length: undefined
我认为上限是 2^32 - 1,即 42949672995,谁能解释为什么长度有问题?
【问题讨论】:
-
根据this answer,它依赖于实现。你在什么系统上使用什么浏览器?
-
我在 64 位 Windows 10 Enterprise 上使用 Chrome 版本 69.0.3497.100(官方构建)(32 位),内存为 16 GB
-
我什至不认为浏览器 js 允许访问 ram 的演出......
标签: javascript arraybuffer typed-arrays