readFileAs*
Envoltorios con promesas alrededor de FileReader.
| Función | Resuelve con | Sirve para |
|---|---|---|
readFileAsArrayBuffer(blob) |
ArrayBuffer |
Procesar binario |
readFileAsUint8Array(blob) |
Uint8Array |
Alimentar checkEncoding / arrayBufferToString |
readFileAsText(blob, encoding?) |
string |
Archivos de texto; si no sabes la codificación, olfatéala antes |
readFileAsDataURL(blob) |
string |
Vistas previas de imágenes |
Ejemplo
import { readFileAsUint8Array, arrayBufferToString } from 'ranuts';
input.addEventListener('change', async (e) => {
const bytes = await readFileAsUint8Array(e.target.files[0]);
const text = arrayBufferToString(bytes); // la codificación se olfatea, GBK/Big5 incluidos
});Notas
- Las tres salidas están conectadas:
onload,onerroryonabort. Olvidaronabortes la manera clásica de dejar una promesa pendiente para siempre cuando alguien cancela el selector de archivos. - Rechaza con un error claro allí donde no existe
FileReader(Node, algunos contextos de worker). - Nunca hagas
new TextDecoder().decode()sobre un archivo de origen desconocido: eso da por hecho UTF-8 y convierte GBK/Big5 en galimatías. UsaarrayBufferToString, que olfatea primero.