43

我正在编写一个 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>。使用jQuerytotal_encoded_data添加到 href 的位置。

我通过手动二进制搜索发现,如果 的大小total_encoded_data大于 2097100 个字符,那么当我单击链接时,我会收到一条 Aw, Snap 消息。如果尺寸更小,那么我可以按预期下载。

除了测试文件大小,我还用来atoi确保base64编码是有效的,并且它运行没有错误。

Aw, Snap 消息不会chrome://crasheschrome_debug.log

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

4

1 回答 1

56

这是一种已知的铬虫。推荐的解决方法是使用blob URL。另请参阅在 JavaScript 中从 base64 字符串创建 Blob

于 2013-05-26T18:48:22.010 回答