2012-12-01 158 views
0

我試圖做這樣的事情:存儲內容

的JavaScript:

function readMultipleFiles(evt) { 
    //Retrieve all the files from the FileList object 
    var files = evt.target.files; 
    window.array = [] 
    if (files) { 
     for (var i = 0, f; f = files[i]; i++) { 
      var r = new FileReader(); 
      r.onload = (function (f) { 
       return function (e) { 
        var contents = e.target.result; 
        window.array.push(contents); 
       }; 
      })(f); 
      r.readAsText(f); 
     } 
     alert(window.array); 
    } else { 
     alert("Failed to load files"); 
    } 
} 
document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false);​ 

HTML:

<input type="file" id="fileinput" multiple /> 

所以,我可以在本地讀本地文件。 然而,相反我希望將文件內容存儲在該格式的數組:

[file1Contents, file2Contents, file3Contents... etc] 

我怎麼會去嗎?我嘗試設置一個全局變量(如window.fileContents)和on.load內更新,但沒有工作

感謝

+0

顯示您的嘗試代碼。 –

+0

上面編輯的嘗試代碼^ – by0

回答

1

我不能完全確定你希望做什麼,但我會給它一個擺動。我看到你已經閱讀文件爲文本..你能不能把它推到數組中?我修改了以下代碼:

var masterFileArray = []; // where I will store the contents 

function readMultipleFiles(evt) { 
    //Retrieve all the files from the FileList object 
    var files = evt.target.files; 
    window.array = [] 
    if (files) { 
     for (var i = 0, f; f = files[i]; i++) { 
      var r = new FileReader(); 
      r.onload = (function (f) { 
       return function (e) { 
        var contents = e.target.result; 
        window.array.push(contents); 
        masterFileArray.append({name:f.name, contents: contents}); // storing as object 
       }; 
      })(f); 
      r.readAsText(f); 
     } 
     console.log(masterFileArray); 
    } else { 
     alert("Failed to load files"); 
    } 
} 
document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false);