我正在编写一个执行以下操作的 chrome 扩展程序:
- 使用
XMLHttpRequest
从网站下载文件到内存 - 向文件添加额外的数据,然后将结果进行 base64 编码到变量
total_encoded_data
- 使用
<a href=data:application/octet-stream;charset=utf-8;base64,' + total_encoded_data+' download='file.bin'>Click to Download</a>
向用户提供数据.在哪里total_encoded_data
使用 jQuery 添加到 href。
我发现,通过手动二进制搜索,如果 total_encoded_data
的大小大于 2097100 个字符,那么当我单击该链接时,我将收到一条 Aw, Snap 消息。如果尺寸较小,那么我可以按预期下载。
除了测试文件大小,我还使用了atoi
确保base64编码有效,运行无误。
Aw,Snap 消息不会在 chrome://crashes
中产生任何崩溃报告chrome_debug.log
中也没有任何意外输出
在提供 base64 编码字符串长度大于 2097100 的数据 uri 时,如何避免出现 Aw, Snap 消息?
最佳答案
这是一个known chromium bug .推荐的解决方法是使用 blob URL .另见 Creating a Blob from a base64 string in JavaScript .
关于javascript - 数据 uri 太大时为 "Aw, Snap",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16761927/