0Pricing
React Academy · Aula

Entrada de arquivo e leitura de dados de arquivos

Trate , leia metadados de arquivos e visualize imagens com FileReader.

Entrada de arquivo e leitura de dados de arquivos é uma aula grátis de React Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

Boas-vindas

Nesta lição, você manipulará campos de arquivo no React, lerá metadados de arquivos, exibirá uma prévia das imagens selecionadas e usará a API FileReader para processar o conteúdo dos arquivos.

O elemento de campo de arquivo

O elemento `` não pode ser controlado pela propriedade value do React — ele é sempre não controlado. Leia o arquivo selecionado de `e.target.files[0]` na função `onChange`.
function FileInput() {
  const handleChange = (e) => {
    const file = e.target.files[0];
    console.log(file.name, file.size, file.type);
  };
  return <input type="file" onChange={handleChange} />;
}

Propriedades do objeto de arquivo

Um objeto de arquivo estende Blob e tem: `name` (nome do arquivo), `size` (bytes), `type` (tipo MIME, como 'image/png') e `lastModified` (marca temporal). Leia essas propriedades antes de enviar ou processar o arquivo.

Aceitando tipos específicos de arquivo

Use o atributo `accept` para indicar ao navegador quais tipos de arquivo exibir. Combine tipos MIME e extensões. Sempre valide também no servidor.
<input type="file" accept="image/png,image/jpeg,.pdf" />

Seleção de vários arquivos

Adicione o atributo `multiple` para permitir a seleção de vários arquivos. `e.target.files` retorna uma FileList — converta-a em uma matriz com `Array.from()` para usar métodos de matriz.
<input type="file" multiple />

const files = Array.from(e.target.files);

Exibindo uma prévia de imagem com URL.createObjectURL

Crie uma URL temporária de prévia para um arquivo de imagem selecionado usando `URL.createObjectURL(file)`. Lembre-se de revogá-la com `URL.revokeObjectURL` quando terminar, para liberar memória.
const [preview, setPreview] = useState(null);

const handleChange = (e) => {
  const file = e.target.files[0];
  if (file) setPreview(URL.createObjectURL(file));
};

useEffect(() => {
  return () => { if (preview) URL.revokeObjectURL(preview); };
}, [preview]);

{preview && <img src={preview} alt="Preview" />}

Lendo o conteúdo de arquivos com FileReader

Use a API `FileReader` para ler o conteúdo do arquivo como texto ou como uma URL de dados. Chame `reader.readAsText(file)` para arquivos de texto ou `reader.readAsDataURL(file)` para arquivos binários, como imagens.
const reader = new FileReader();
reader.onload = (e) => setContent(e.target.result);
reader.readAsText(file);

Validação do tamanho do arquivo

Valide o tamanho do arquivo no cliente antes de enviá-lo. Rejeite arquivos maiores que um limite e exiba uma mensagem de erro.
const MAX_SIZE = 5 * 1024 * 1024; // 5 MB
if (file.size > MAX_SIZE) {
  setError('File must be under 5 MB');
  return;
}

Limpando o campo de arquivo

Não é possível limpar um campo de arquivo definindo seu valor, pois ele é somente leitura. Em vez disso, redefina-o de forma imperativa por meio de uma referência ou alterando a propriedade `key` do campo para forçar uma nova montagem.
const inputRef = useRef();
const clear = () => { inputRef.current.value = ''; };
<input ref={inputRef} type="file" />

Armazenando referências de arquivos no estado

Armazene o próprio objeto de arquivo no estado, não apenas o nome ou a URL. Assim, você poderá enviar o arquivo mais tarde sem precisar lê-lo novamente do DOM.
const [file, setFile] = useState(null);
const handleChange = (e) => setFile(e.target.files[0] || null);

Verificação rápida

Qual método cria uma URL temporária para exibir no navegador uma prévia de um arquivo de imagem selecionado?

Recapitulação

Leia os arquivos selecionados de e.target.files. Use URL.createObjectURL para prévias, FileReader para ler o conteúdo, valide o tamanho no cliente e armazene o objeto de arquivo no estado para enviá-lo posteriormente.

Próxima etapa

Próxima lição: **Interface de envio de arquivos por arrastar e soltar** — você criará uma área de arrastar e soltar com feedback visual usando eventos do React.

Perguntas Frequentes

A aula “Entrada de arquivo e leitura de dados de arquivos” é grátis?

Sim — o texto completo de “Entrada de arquivo e leitura de dados de arquivos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “Entrada de arquivo e leitura de dados de arquivos”?

Trate , leia metadados de arquivos e visualize imagens com FileReader. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Entrada de arquivo e leitura de dados de arquivos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Entradas não controladas com useRef
  2. Entrada de arquivo e leitura de dados de arquivos
  3. Interface de envio de arquivos por arrastar e soltar
  4. Carregando arquivos para uma API de back-end
← Voltar para React Academy