簡體   English   中英

filereader異步加載文件后獲取文件名

[英]Get filename after filereader asynchronously loaded a file

我正在一個目錄中加載幾個文件,以便從中解析一些數據。 到目前為止,這很好用,但我想知道我正在查看哪個文件。 所以我需要加載文件后的名稱。 有人可以幫忙嗎?

// 獲取目錄中的所有文件

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

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

以下源代碼為文件閱讀器添加一個屬性

    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]);
    }

解決這個問題的另一種方法是在onload -event之后讀取文件名,使用onloadend -event,如下所示:

for (var i = 0; i < files.length; i++) {

    var fileReader = new FileReader();

    fileReader.fileName = files[i].name;

    fileReader.onload = function () {
        /* do something with file */
    }

    fileReader.onloadend = function () {
        console.log(fileReader.fileName); // here you can access the original file name
    }

    fileReader.readAsText(files[i]);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM