数据uri太大时“Aw,Snap”

时间:2013-05-26 17:37:14

标签: javascript google-chrome-extension data-uri

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

  1. 使用XMLHttpRequest
  2. 将文件从网站下载到内存
  3. 向文件添加其他数据,然后base64将结果编码为变量total_encoded_data
  4. 使用<a href=data:application/octet-stream;charset=utf-8;base64,' + total_encoded_data+' download='file.bin'>Click to Download</a>向用户提供数据。使用jQuery将total_encoded_data添加到href的位置。
  5. 我通过手动二进制搜索发现,如果total_encoded_data的大小大于2097100个字符,那么当我点击链接时,我会收到一条Aw,Snap消息。如果尺寸较小,那么我可以按预期下载。

    除了测试文件大小外,我还使用atoi来确保base64编码有效,并且它可以正常运行。

    Aw,Snap消息不会在chrome://crashes中生成任何崩溃报告,也不会在chrome_debug.log中生成任何意外输出

    如何在提供base64编码的字符串长度大于2097100的数据uri时避免使用Aw,Snap消息?

1 个答案:

答案 0 :(得分:49)

这是一个known chromium bug。建议的解决方法是使用blob URL。另请参阅Creating a Blob from a base64 string in JavaScript