2016-10-14 4 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에 물방울의 크기를 증가)마다 호출되지

나타낸다. 문제는 Chrome에서만 재현 가능합니다 (53.0.2785.143 이하에서 테스트 됨)

잘못된 정보가있을 수 있습니다.

답변

1

지난 번 Chrome을 사용했을 때 단일 BLOB 크기로 약 500MB의 하드 캡이있었습니다. 이러한 스레드 주어진 또한

: https://bugs.chromium.org/p/chromium/issues/detail?id=375297https://github.com/streamproc/MediaStreamRecorder/issues/86

여러 개의 작은 모양을 만들고 당신이 갈 수 있도록 페이지를 다시로드해야 할 때 메모리가 제대로 삭제하지 않은 것 같습니다. (JSFiddle에서 몇 가지 시도가 필요한 이유를 설명 할 수도 있음).

지금은 속임수이지만, 해결 방법을 찾아야하거나 Chrome의 소스 코드를 살펴 봐야 할 것 같습니다.

+0

2GB 크기의 BOB 짝수에는 문제가 없습니다. Chrome에 너무 큰 Blob을 최적화하고 HDD로 옮기기 때문에 버그가 있다고 생각합니다. – Suprido

+0

예, 방금 사파리 & 파이어 폭스에서 몇 GBs의 큰 얼룩이 있는지 확인했습니다. 문제는 재현 할 수 없습니다. Chrome에서 https://codereview.chromium.org/2055053003/에 버그가 있습니다. 이 문제가 곧 해결 될 수 있기를 바랍니다. – noKid

관련 문제