Componente estável e recomendada para novos projetos.
Anatomia, uso, comportamento visual e recomendações conceituais são mantidos pelo Padrão Digital de Governo. Esta página documenta a implementação Web Components e sua API executável.
Regra síncrona ou assíncrona aplicada à lista de arquivos selecionados. O componente valida File[], mas não envia arquivos nem interpreta a resposta do servidor.
Texto personalizado para o botão de upload. Se não fornecido, será exibido "Selecione o arquivo" como texto padrão. Use este slot para personalizar o texto do botão de acordo com o contexto do upload, por exemplo: "Anexar documentos", "Enviar imagens", etc.
"feedback"
Mensagem de validação, normalmente um br-message.
"helper"
Texto auxiliar exibido abaixo da superfície de seleção.
"label"
Rótulo customizado do upload. Quando utilizado, a prop label é ignorada.
"loading"
Conteúdo exibido enquanto o handler fornecido pela aplicação envia um arquivo.
"upload-list"
Permite customizar a área de listagem de arquivos. Se utilizado, substitui a lista padrão gerada pelo componente.
Para o contrato geral e a matriz de componentes, consulte o guia de formulários. Esta seção documenta o contrato específico do br-upload.
Use required, min-files, max-files, accept e max-file-size conforme a regra do campo. O estado é exposto em files e enviado por FormData; navegadores não permitem atribuir programaticamente um FileList.
Para rejeições de domínio, use setCustomValidity() e limpe a mensagem após uma nova seleção válida. input e change são emitidos quando a lista muda.
A mensagem é renderizada como br-message quando não existe feedback. Use o slot feedback para fornecer o conteúdo e manter a referência ARIA.
Para regras de domínio síncronas ou assíncronas, use a propriedade JavaScript validator. Ela recebe File[] e retorna uma mensagem ou null. A validação também ocorre no change, pode ser acionada por await upload.validate() e emite brUploadValidationChange.
Acessibilidade
Forneça label visível, instruções de formatos/tamanho e uma mensagem textual de erro. O botão de escolher arquivo deve ter nome acessível e ser alcançável por teclado; ofereça também remoção individual sem depender de arrastar.
Associe mensagens com aria-describedby/aria-errormessage e mantenha aria-invalid sincronizado ao mostrar erro.
Redisparado uma vez no host quando encapsulado pelo Shadow DOM.
change
seleção/drop/remoção é confirmada
Sim
Sim
Não
Sim
Após input.
input
lista de arquivos muda
Sim
Sim
Não
Sim
Sintético após atualizar files; uma ocorrência.
click e foco
botão/input são ativados
conforme o tipo
Sim
conforme o tipo
Sim
Botão encaminha a seleção ao file input.
drag/drop
arquivo cruza ou é solto na drop zone
conforme o tipo
conforme o tipo
conforme o tipo
Parcial
Drop atual é tratado pelo botão interno.
Eventos não suportados ou ainda não caracterizados
Drag and drop real e cancel em Firefox/WebKit aguardam caracterização. Escrita em files, reset e
inicialização são silenciosos. Eventos redisparados são sintéticos e não prometem isTrusted.
Leia event.target.files; FormData recebe cada arquivo pelo name. React usa ref, Angular usa file value accessor e Vue usa o model de arquivos. Label, botão e input compartilham o nome acessível.
src/shared/platform-contract.e2e.tsx usa userEvent.upload e cobre ordem, ausência de duplicação, target,
caminho e FormData em Chromium headless. _tests/upload.e2e.tsx cobre lista, remoção, capture, cancel e
handler de drop.
Documentações relacionadas
Consulte o guia geral de dados remotos
para integrar uploadHandler, progresso, cancelamento, validação e tratamento
de erros sem colocar endpoint ou autenticação dentro do componente.
Também são relacionados:
Input e Textarea, para validação assíncrona de
campos de formulário;