私はchrome拡張を書いて、次のことをします:
XMLHttpRequest
を使用してWebサイトからメモリにファイルをダウンロードしますtotal_encoded_data
にエンコードします。<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に追加します。手動のバイナリ検索の結果、total_encoded_data
のサイズが2097100文字を超える場合、リンクをクリックするとAw、Snapメッセージが表示されることがわかりました。サイズが小さければ、期待どおりにダウンロードできます。
ファイルサイズのテストに加えて、atoi
を使用して、base64エンコーディングが有効であり、エラーなしで動作することを確認しました。
Aw、Snapメッセージは、chrome://crashes
のクラッシュレポートや、chrome_debug.log
の予期しない出力を生成しません。
Base64でエンコードされた文字列の長さが2097100より大きいデータURIを提供するときに、Aw、Snapメッセージを回避するにはどうすればよいですか?
既知のクロムのバグ です。推奨される回避策は blob URL を使用することです。 JavaScriptでbase64文字列からBlobを作成する も参照してください。