2016-10-14 5 views
1

FileReaderに問題が発生し、かなり大きなBLOBを読み込んでいます。FileReaderが大きなブロブの読み込みに失敗しました

const size = 50; //MB 
const blob = new Blob([new ArrayBuffer(size*1024*1024)], {type: 'application/octet-string'}); 

console.log(blob.size); 

const reader = new FileReader(); 
reader.onload = function(e) { 
    console.log(new Uint8Array(e.target.result)); 
}; 
reader.readAsArrayBuffer(blob.slice(0, 1024)); 

https://jsfiddle.net/aas8gmo2/

上記の例では、(それがある場合、100/200/300 MBにブロブのサイズを増やす)のonload機能が毎回呼び出されないことを示しています。この問題はChromeでのみ再生可能です(53.0.2785.143でテスト済み)

何が間違っている可能性がありますか?

答えて

1

前回Chromeを使用したとき、1つのブロブサイズで約500MBのハードキャップがありました。

また、これらのスレッドを与えられた:https://bugs.chromium.org/p/chromium/issues/detail?id=375297https://github.com/streamproc/MediaStreamRecorder/issues/86

いくつかの小さな塊を作成するときに、メモリが適切にクリアされていないことが表示されます、あなたが上に行くことができるようにページをリロードする必要がある場合があります。 (これは、JSFiddleでいくつかの試行が必要な理由を説明します)。

だから今は答えを欺いていますが、回避策を見つけたり、Chromeのソースコードを調べたりする必要があるようです。

+0

2GBの偶数サイズのブロブに問題はありません。私は、大きすぎるBlobを最適化してHDDに移動するので、Chromeにはバグがあると思います。 – Suprido

+0

はい、私はSafariとFirefoxで数GBの巨大な塊を確認しましたが、問題は再現できません。 Chromeのhttps://codereview.chromium.org/2055053003/にバグの問題があります。これがすぐに修正されることを願っています。 – noKid

関連する問題