gpt4 book ai didi

javascript - 将数组缓冲区转换为字符串 - 超出最大调用堆栈大小

转载 作者:行者123 更新时间:2023-12-04 13:05:44 26 4
gpt4 key购买 nike

我们的应用程序下载了一个 zip 文件,但响应是二进制的。

所以我所做的就是将其转换为base64。大小为 87.7KB 时有效但是当响应大小为 183KB 时会发生错误.

错误是 Uncaught RangeError: Maximum call stack size exceeded
有问题的行是

btoa(String.fromCharCode.apply(null, new Uint8Array(blob)))

根据 this answer , String.fromCharCode.apply()必须替换为 TextEncoder .

所以我把它改成了
btoa(new TextDecoder('utf-8').decode(new Uint8Array(blob)))

但我得到一个错误。
Uncaught DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
我使用此 answer 的最顶部片段再次对其进行了更改

现在是新代码
btoa(unescape(encodeURIComponent(new TextDecoder('utf-8').decode(new Uint8Array(blob)))))

现在可以下载,但下载的 zip 文件已损坏。

完整代码可见 here

最佳答案

我从另一个问题得到了答案

btoa(new Uint8Array(blob).reduce(function (data, byte) {
return data + String.fromCharCode(byte);
}, ''));

Source

关于javascript - 将数组缓冲区转换为字符串 - 超出最大调用堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49123222/

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