ich lade mehrere Dateien in ein Verzeichnis, um einige Daten von ihnen zu analysieren. Das funktioniert bisher gut, aber ich würde gerne wissen, welche Datei ich mir anschaue. Ich brauche also den Namen der Datei, nachdem sie geladen wurde. Kann hier jemand helfen?
// ruft alle Dateien in dir auf
function updateData(){
var dirReader = approot.createReader();
var fail =failCB('Error - Directory for parsing failed to open'); // logs fail...
dirReader.readEntries(parseData,fail);
}
// jede Datei laden
function parseData(entries){
var i;
for (i=0; i<entries.length; i++) {
var reader = new FileReader();
reader.onloadend = createListItem;
reader.readAsText(entries[i]);
}
}
// HIER MÖCHTE ICH DEN NAMEN KENNEN !!!!
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);
}
}
beifall für Anregungen;)
Erstellen Sie einen Abschluss um File
, um die aktuelle Datei zu erfassen. Dann können Sie den Dateinamen erhalten.
Ein Beispiel: http://www.html5rocks.com/de/tutorials/file/dndfiles/#toc-reading-files
Schließung zum Erfassen der Dateiinformationen.
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]);
}
}
Und die aufgerufene Funktion erhält ein zusätzliches Argument
function createListItem(evt, file) {
console.log(evt.target.result)
console.log(file.name);
}
Der folgende Quellcode fügt dem Dateireader ein Attribut hinzu
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]);
}
Eine andere Möglichkeit zur Lösung dieses Problems besteht darin, den Dateinamen nach dem Ereignis onload
- mit dem Ereignis onloadend
- wie folgt zu lesen:
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]);
}