我正在尝试读取大文件(3 3GB)的切片为100Mb。
***function sliceMe() {
var file = document.getElementById('files').files[0],
fr = new FileReader;
var chunkSize = document.getElementById('txtSize').value;
chunkSize =1048576;
var chunks = Math.ceil(file.size / chunkSize);
var chunk = 0;
document.getElementById('byte_range').innerHTML = "";
function loadNext() {
var start, end,
blobSlice = File.prototype.mozSlice || File.prototype.webkitSlice;
start = chunk * chunkSize;
if (start > file.size)
start = end+1;
end = start + (chunkSize -1) >= file.size ? file.size : start + (chunkSize -1);
fr.onload = function(e) {
if (++chunk <= chunks) {
document.getElementById('byte_range').innerHTML += chunk + " " +
['Read bytes: ', start , ' - ', end,
' of ', file.size, ' byte file'].join('')+"<br>";
//console.info(chunk);
loadNext(); // shortcut here
}
};
fr.readAsArrayBuffer(blobSlice.call(file, start, end));
}
loadNext();
}***上面的代码在Firefox和Chrome 16中运行正常,但在Chrome 17和18dev版本中,在读取1 1GB数据后浏览器崩溃。
Chrome 17中是否存在已知问题?
发布于 2013-07-11 21:08:06
我在读取一个1.8 GB的文件时也遇到了同样的问题。如果我观察任务管理器,chrome.exe会占用高达1.5 GB的内存,然后崩溃。我的解决方案是使用Javascript worker,然后使用FileReaderSync而不是FileReader。javascript worker在单独的线程中运行,而FileReaderSync只能在javascript worker中工作。
发布于 2012-05-04 16:54:05
您需要更改算法,该算法应根据文件大小更改块大小运行时。当循环连续运行时,google chrome崩溃。
https://stackoverflow.com/questions/9265139
复制相似问题