32

我正在一个目录中加载几个文件,以便从中解析一些数据。到目前为止,这很好用,但我想知道我正在查看哪个文件。所以我需要文件加载后的名称。有人可以帮忙吗?

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

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 which 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);
  }
}
4

2 回答 2

44

在 周围创建一个闭包File以捕获当前文件。然后你可以得到文件名。

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

关闭以捕获文件信息。

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);
}
于 2012-09-22T20:30:43.367 回答
18

以下源代码为文件阅读器添加一个属性

    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]);
    }
于 2015-11-04T11:01:33.310 回答