/ / Predajte parameter udalosti Onload FileReader - javascript, html5, filereader

Prejdite parametrom na udalosť načítača FileReader - javascript, html5, filereader

Musím si prečítať niektoré csv súbory dané používateľom. Súbory sa odovzdávajú na stránku / skript pomocou divízie drag and drop, ktorá spracuje pokles súboru nasledujúcim spôsobom:

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

Musím analyzovať každý súbor pomocou knižnice csv, ktorá ho prevádza do poľa, ale tiež musím sledovať názov súboru, ktorý práve analyzujem. Tu uvádzam kód, ktorý používam na analýzu každého súboru:

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

Dovtedy všetko funguje skvele. Potrebujem tiež odovzdať názov súboru reader.onload udalosť, napr .:

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

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

};
})(currFile);

Je možné? Ako to môžem urobiť? Vopred ďakujem za pomoc, s pozdravom

odpovede:

43 pre odpoveď č. 1

Vyskúšajte nasledujúce:

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

Tu vytvárate nový fileName premenná zakaždým, keď je súbor odovzdaný vonkajšej metóde. Potom vytvárate funkciu, ktorá má prístup k tejto premennej (kvôli uzavretiu) a vracia ju.