2013-07-04 41 views
7

我有一个问题,使用JavaScript FileRead尝试读取大文件。使用Javascript文件读取器与巨大的文件

例如,我有一个200mb的文本文件,每次读取该文件时代码将停止工作。

它可能读取文本文件,但例如只有前10行或10mb后停止读取?

这是我的代码:

var file = form.getEl().down('input[type=file]').dom.files[0]; 
var reader = new FileReader(); 

reader.onload = (function(theFile) { 
       return function(e) { 
        data = e.target.result; 
        form.displayedData=data; 
       }; 
      })(file); 

reader.readAsText(file); 

e.target.result总是有文件的全部数据。

我能在这里做什么?

THX

回答

10

这将只读取第一个10 MB:

var file = form.getEl().down('input[type=file]').dom.files[0]; 
var reader = new FileReader(); 

reader.onload = function(e) { 
    var data = e.target.result; 
    form.displayedData = data; 
}; 

reader.readAsText(file.slice(0, 10 * 1024 * 1024)); 
+0

THX Esailija,这个完美的作品 – ssamuel68

+1

是的,这首先读取10MB,但文件仍然在内存中,我认为原来的问题是关于阅读大文件并且不将整个文件加载到内存中。我不是吗? – Yetti

+0

是@Yetti我的问题是一样的。如果我们尝试打开4GB文件,file.slice会尝试加载整个文件。 – Fatih