ユーザーがアップロードする zip ファイルを選択できるフォームがあります。アップロードには時間がかかる可能性があり、帯域幅を節約したいので、サーバーにアップロードする前に、この zip ファイルのクライアント側の検証を実行しようとしています。
私がする必要があるのは、zip に含める必要がある .csv ファイルを読み取り、.csv で参照されている zip 内の他のファイルの存在を確認することだけです。これを達成するために、私はJSZipを使用しようとしています。
アーカイブが小さい場合、これはうまく機能します。アーカイブが大きい場合 (~500MB のファイルでテスト)、Chrome がクラッシュします。
var reader = new FileReader();
reader.onload = function (e) {
console.log("Got here!");
// Read csv using JSZip, validate zip contents
};
reader.readAsArrayBuffer(file);
私のコードでは、onload コールバックのすべてのロジックをコメントアウトし、それがクラッシュの原因ではないことを確認しました。onload コールバックが呼び出される前に Chrome がクラッシュすることを発見しました。
はるかに大きな zip ファイルを使用して FireFox でこれをテストしたところ、問題なく動作しました。