javascript - example - Pasa un parámetro al evento onload FileReader
filereader javascript example (1)
Intenta lo siguiente:
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);
Aquí, está creando una nueva variable fileName
cada vez que se pasa un archivo al método externo. Luego, está creando una función que tiene acceso a esa variable (debido al cierre) y la está devolviendo.
Necesito leer algunos archivos csv, dados por el usuario. Los archivos se pasan a la página / secuencia de comandos utilizando un div de arrastrar y soltar, que maneja la caída del archivo de la siguiente manera:
function handleFileDrop(evt) {
evt.stopPropagation();
evt.preventDefault();
var files = evt.dataTransfer.files; // FileList object.
...
}
Necesito analizar cada archivo con una biblioteca csv que lo convierte en una matriz, pero también necesito hacer un seguimiento del nombre del archivo que estoy analizando actualmente. Aquí está el código que utilizo para analizar cada archivo:
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);
}
Hasta esto, todo funciona muy bien. Lo que necesito es pasar también el nombre del archivo al evento reader.onload
, por ejemplo:
reader.onload = (function(theFile){
return function(e){
***** I need to have fileName value HERE *****
};
})(currFile);
¿Es posible? ¿Cómo puedo hacer esto? Gracias de antemano por cualquier ayuda, un saludo