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
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.