readFileAs*
Hüllen mit Promises um den FileReader.
| Funktion | Löst auf zu | Wofür |
|---|---|---|
readFileAsArrayBuffer(blob) | ArrayBuffer | Binärverarbeitung |
readFileAsUint8Array(blob) | Uint8Array | Für checkEncoding / arrayBufferToString |
readFileAsText(blob, encoding?) | string | Textdateien; ist die Kodierung unbekannt, erst erschnüffeln |
readFileAsDataURL(blob) | string | Bildvorschauen |
Beispiel
js
import { readFileAsUint8Array, arrayBufferToString } from 'ranuts';
input.addEventListener('change', async (e) => {
const bytes = await readFileAsUint8Array(e.target.files[0]);
const text = arrayBufferToString(bytes); // die Kodierung wird erschnüffelt, GBK/Big5 inklusive
});Hinweise
- Alle drei Ausgänge sind verdrahtet:
onload,onerrorundonabort.onabortzu vergessen ist der klassische Weg, ein Promise für immer offen zu lassen, wenn jemand den Dateidialog abbricht. - Lehnt mit einem klaren Fehler ab, wo es keinen
FileReadergibt (Node, manche Worker-Kontexte). - Rufe nie
new TextDecoder().decode()auf eine Datei unbekannter Herkunft auf: Das setzt UTF-8 voraus und macht aus GBK/Big5 Zeichensalat. NimmarrayBufferToString, das vorher erschnüffelt.