txt subir servidor mostrar manejo leer guardar con carga asincrona archivos archivo javascript android cordova fileapi

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