2013-04-11 78 views
2

我有一個需要保存的文件列表,除了需要將readAsDataURL發送到服務器的名稱之外。JavaScript Async readAsDataURL多個文件

問題是我不知道如何做到這一點與readAsDataURL的異步性質。因爲要將DATAURL保存到數組中,我需要查找文件列表中文件的名稱。我無法將文件傳遞給readAsDataURL的異步方法。你如何正確地寫這個工作?最終的結果是我想要一個JSZip文件發送到服務器的文件列表。

function saveFileList(files) 
{ 
    for (var i = 0, file; file = files[i]; i++) { 

     var fr = new FileReader(); 
     fr.onload = function(e){ 
     if (e.target.readyState == FileReader.DONE) { 
      var tt = e.target.result.split(",")[1]; 
          //update the record in the list with the result 
      } 
     }; 

     var pp = fr.readAsDataURL(file); 
    } 

回答

0

你需要圍繞它的另一個功能,讓你可以通過在文件試試這個:

var reader = new FileReader(); 

reader.onload = (function(theFile) { 
    return function(e) { 
     if(reader.readyState == FileReader.DONE) 
     alert(theFile.name); // The file that was passed in. 
     } 
    }; 
})(file); 

reader.readAsDataURL(file); 
0

另一種羅素G公司的回答是:

var reader = new FileReader(); 
reader.onload = function(event){ 
    payload = event.target.result; 
    var filename = file.name, filetype = file.type;//etc 
    //trigger a custom event or execute a callback here to send your data to server. 
}; 
reader.onerror = function(event){ 
    //handle any error in here. 
}; 
reader.readAsDataURL(file);