javascript - subir - Obtener un nombre de archivo después de que el lector de archivos cargue un archivo de forma asíncrona
mostrar archivo txt en html (3)
Cree un cierre alrededor del File
para capturar el archivo actual. Entonces puedes obtener el nombre del archivo.
Un ejemplo: http://www.html5rocks.com/en/tutorials/file/dndfiles/#toc-reading-files
Cierre para capturar la información del archivo.
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]);
}
}
Y la función llamada obtiene un argumento adicional
function createListItem(evt, file) {
console.log(evt.target.result)
console.log(file.name);
}
Estoy cargando varios archivos en un directorio para analizar algunos datos de ellos. Esto funciona muy bien hasta ahora, pero me gustaría saber qué archivo estoy viendo. Entonces necesito el nombre del archivo después de que fue cargado. ¿Alguien puede ayudar con eso?
// obtiene todos los archivos en dir
function updateData(){
var dirReader = approot.createReader();
var fail =failCB(''Error - Directory for parsing failed to open''); // logs fail...
dirReader.readEntries(parseData,fail);
}
// cargando cada archivo
function parseData(entries){
var i;
for (i=0; i<entries.length; i++) {
var reader = new FileReader();
reader.onloadend = createListItem;
reader.readAsText(entries[i]);
}
}
// AQUÍ ME GUSTARÍA SABER EL NOMBRE !!!!
function createListItem(evt){
// it gives me all the loaded data. But based on wich 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);
}
}
aplausos por cualquier sugerencia;)
El siguiente código fuente agrega un atributo al lector de archivos
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]);
}
Otra forma de resolver este problema es leer el nombre del archivo después de la carga -event con el onloadend
-event como este:
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]);
}