文件读取器后获取文件名asynchronous加载文件

我正在加载目录中的几个文件来parsing他们的一些数据。 这工作到目前为止,但我想知道我正在看的至极文件。 所以我需要加载后的文件的名称。 有人可以帮助吗?

//获取目录中的所有文件

function updateData(){ var dirReader = approot.createReader(); var fail =failCB('Error - Directory for parsing failed to open'); // logs fail... dirReader.readEntries(parseData,fail); } 

//加载每个文件

 function parseData(entries){ var i; for (i=0; i<entries.length; i++) { var reader = new FileReader(); reader.onloadend = createListItem; reader.readAsText(entries[i]); } } 

//这里我想知道这个名字!

 function createListItem(evt){ // it gives me all the loaded data. But based on wich file it was, i would like to handle it! console.log(evt.target.result) // lets say something like this $('#content').find( file.name ).append(evt.target.result); } } 

欢呼任何build议;)

围绕File创build一个闭包来捕获当前文件。 然后你可以得到文件名。

示例: http : //www.html5rocks.com/en/tutorials/file/dndfiles/#toc-reading-files

closures捕获文件信息。

 function parseData(entries){ for (var i=0; i<entries.length; i++) { reader.onloadend = (function(file) { return function(evt) { createListItem(evt, file) }; })(entries[i]); reader.readAsText(entries[i]); } } 

被调用函数得到一个额外的参数

 function createListItem(evt, file) { console.log(evt.target.result) console.log(file.name); } 

以下源代码将一个属性添加到文件读取器

  for(i=0; i < files.length; i++) { var fileReader = new FileReader(); fileReader.onload = function(file) { // DO what you need here // file name = file.target.fileName } // end of reader load fileReader.fileName = files[i].name; fileReader.readAsBinaryString(files[i]); }