1UnitedPower: Wo liegen die Daten wirklich?

Beitrag lesen

Meine Herren!

So ganz klar isses mir noch nicht, wann genau der I/O erfolgt, weil ich hier keinen FileReader einsetze sondern einfach nur die Blobs als Eigenschaften an ein Objekt zuweise.

Mit diesen beiden Zeilen holst du dir Referenz auf ein FileList

var fileInput = document.querySelector("#myfiles");  
        var files = fileInput.files;

Das FileList-Objekt ist selber relativ uninteressant, interessant sind die File-Objekte, die es enthält.

Das File-Interface spezifiziert aber auch noch nicht, wie aus der Datei gelesen werden soll. Es wird lediglich empfohlen, dass Browser zum Zeitpunkt des Erstellens erstmal eine Arbeitskopie der Datei anlegen.

Wie genau gelesen werden soll, wird hingegen durch die read-Operation festgelegt.

Diese abstrakte read-Operationen kann von verschiedenen anderen Methoden aufgerufen, zum Beispiel von den Methoden: readAsArrayBuffer oder reasAsText.

Das ist aber immer noch nicht die einzige Möglichkeit, wie Datei-Streams in den Arbeitsspeicher gelangen können. Bei einem 0815-Datei-Upload muss der Browser auch irgendwann die Dateien laden.

Alles in allem sind die APIs so abstrakt formuliert, dass man völlig agnostisch von der Tatsache, wann die Dateien faktisch im Arbeitsspeicher geladen werden, entwickeln kann. Es kann in einzeln Fällen natürlich trotzdem interessant sein, den genauen Zeitpunkt zu kennen, zum Beispiel, weil Ressourcen-Knappheit herrscht und man die File-API als Flaschenhals identifiziert hat. In dem Fall hilft einem aber die Spezifikation nicht viel weiter, da muss man sich dann die konkreten Implementationen vornehmen.

--
“All right, then, I'll go to hell.” – Huck Finn