/ / FileReader onloadイベントにパラメータを渡す - javascript、html5、filereader

FileReader onloadイベントにパラメータを渡す - javascript、html5、filereader

私は、ユーザーによって与えられたいくつかのCSVファイルを読む必要があります。ファイルは、次のようにファイルドロップを処理するドラッグアンドドロップdivを使用してページ/スクリプトに渡されます。

function handleFileDrop(evt) {
evt.stopPropagation();
evt.preventDefault();
var files = evt.dataTransfer.files; // FileList object.
...
}

私は配列に変換するcsvライブラリで各ファイルを解析する必要がありますが、私は現在解析中のファイル名を追跡する必要があります。ここでは各ファイルを解析するためのコードを示します:

for(var x = 0; x < files.length; x++){
var currFile = files[x];
var fileName = currFile.name;
var reader = new FileReader();
reader.onload = (function(theFile){
return function(e){
var csvArr = CSV.csvToArray( e.target.result, ";", true );
console.log(csvArr);
};
})(currFile);
reader.readAsText(currFile);
}

これまで、すべてがうまくいく。私が必要とするのは、ファイル名を reader.onload イベント、例:

reader.onload = (function(theFile){
return function(e){

***** I need to have fileName value HERE *****

};
})(currFile);

可能です?これどうやってするの?助けを借りて、ありがとうございました。

回答:

回答№1は43

以下を試してください:

var reader = new FileReader();
reader.onload = (function(theFile){
var fileName = theFile.name;
return function(e){
console.log(fileName);
console.log(e.target.result);
};
})(currFile);
reader.readAsText(currFile);

ここでは、新しい fileName ファイルが外部メソッドに渡されるたびに可変です。その変数に(クロージャのために)アクセスし、それを返す関数を作成します。