Nico R.: Warum steht Variable in Funktion nicht zur Verfügung (Frage zum Wiki-Artikel „File Upload“)

Beitrag lesen

problematische Seite

Hi Felix,

da verwendest Du innerhalb der Schleife eine nur dort existierende Variable reader. Wenn Du sie dann am Ende außerhalb der Schleife verwenden willst, gibt es die dort natürlich nicht.

Stimmt. Das war falsch rauskopiert. In meinem laufenden Script ist reader.readAsDataURL() ebenfalls Teil der for-Schleife.

Das Umkopieren von event.target.files zu files ist nur scheinbar eine Erleichterung. Man möchte manchmal wissen, ob man es mit einem Array, oder einer anderen Art von Liste zu tun hat. Das wird bei der Variable files nicht deutlich. Man kann aber event.target.files ansehen, dass es ein Array sein muss.

Wie gesagt, das war ein Überbleibsel aus dem Tutorial-Script.

Hier der nochmals geänderte Ausschnitt. forEach mag ich irgendwie nicht, ich komme mit herkömmlichen for-Schleifen besser klar. Rolfs Vorschlag mit for in führt übrigens in reader.readAsDataURL(file) zu folgender Fehlermeldung: Uncaught TypeError: FileReader.readAsDataURL: Argument 1 does not implement interface Blob.

Laut Konsole wird bei for in nicht nur ein File-Objekt so wie bei for, sondern auch ein function item() erzeugt. Liegts daran? Oder hab ichs falsch angewendet?

function dateiauswahl(event) {
  for(let i=0; i<event.target.files.length; i++) {
  //for(let i in event.target.files) { => führt zu Fehlermeldung in reader.readAsDataURL(file)
    const file = event.target.files[i];
    const reader = new FileReader();

    reader.addEventlistener("load", function(event) {
      console.log(file.name); // Ausgabe: Dateiname
      img.src = event.target.result; // Vorschaubild
    });

    reader.readAsDataURL(file);
  } 
}

Schöne Grüße

Nico