2013-07-04 100 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