数据uri太大时"Aw,Snap"

amc*_*ack 40 javascript google-chrome-extension data-uri

我正在写一个chrome扩展,它执行以下操作:

  1. 使用将文件从网站下载到内存 XMLHttpRequest
  2. 向文件添加其他数据,然后base64将结果编码为变量 total_encoded_data
  3. 使用提供数据给用户<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消息?

rha*_*oto 52

这是一个已知的铬虫.建议的解决方法是使用blob URL.另请参阅在JavaScript中使用base64字符串创建Blob.

  • 3.5年后......仍未修复.该死的,Chrome. (32认同)
  • 差不多7年后......用blob url技巧解决了同样的老问题! (6认同)
  • 老实说,这是荒谬的,它差不多2018年,仍然存在......我知道为什么我抛弃苹果...不幸的是我有很多客户用iPhone*举起拳头*:) (2认同)