readFileAs*
Invólucros com promessas em volta do FileReader.
| Função | Resolve com | Serve para |
|---|---|---|
readFileAsArrayBuffer(blob) | ArrayBuffer | Processar binário |
readFileAsUint8Array(blob) | Uint8Array | Alimentar checkEncoding / arrayBufferToString |
readFileAsText(blob, encoding?) | string | Arquivos de texto; se a codificação for desconhecida, farejo primeiro |
readFileAsDataURL(blob) | string | Pré-visualização de imagens |
Exemplo
js
import { readFileAsUint8Array, arrayBufferToString } from 'ranuts';
input.addEventListener('change', async (e) => {
const bytes = await readFileAsUint8Array(e.target.files[0]);
const text = arrayBufferToString(bytes); // a codificação é farejada, GBK/Big5 inclusive
});Notas
- As três saídas estão ligadas:
onload,onerroreonabort. Esquecer oonaborté o jeito clássico de deixar uma promessa pendente para sempre quando alguém cancela o seletor de arquivos. - Rejeita com um erro claro onde o
FileReadernão existe (Node, alguns contextos de worker). - Nunca faça
new TextDecoder().decode()num arquivo de origem desconhecida: isso presume UTF-8 e transforma GBK/Big5 em rabisco. UsearrayBufferToString, que fareja antes.