JS Module
File Upload Y2Upload
Drag & drop com preview de imagens, múltiplos arquivos, limite de tamanho e validação de tipo — sem dependências externas.
1. Variações
Arraste arquivos ou clique para selecionar. Preview automático para imagens, nome do arquivo para outros tipos.
Galeria de Imagens
Até 4 imagens — qualquer tamanho
Documento (PDF)
1 arquivo — máx 5 MB
Qualquer Arquivo
Vários — máx 2 MB cada
2. Evento em Tempo Real
Cada arquivo adicionado ou removido dispara um evento no wrapper com os dados do arquivo.
Selecione um arquivo para ver o evento...
const upl = document.querySelector('[y2upload]');
upl.addEventListener('yd:upload:add', e => {
const files = e.detail.files; // todos os arquivos no momento
console.log('?sltimo adicionado:', files[files.length - 1].name);
});
upl.addEventListener('yd:upload:remove', e => {
console.log('índice removido:', e.detail.index);
});
3. Envio via FormData
Use Y2Upload.getFiles(el) para recuperar os arquivos e montar
um FormData para envio via fetch.
const upl = document.querySelector('[y2upload]');
document.querySelector('#btn-enviar').addEventListener('click', () => {
const files = Y2Upload.getFiles(upl);
if (!files.length) {
alert('Selecione ao menos um arquivo.');
return;
}
const form = new FormData();
files.forEach(f => form.append('files[]', f));
fetch('/upload', { method: 'POST', body: form })
.then(r => r.json())
.then(data => console.log('Enviado:', data));
});
Quick Reference
| Atributo / API | Padrão | Descrição |
|---|---|---|
y2upload |
— | Ativa o upload no wrapper |
y2upload-accept |
* |
Tipos aceitos — ex: image/*, .pdf |
y2upload-max |
0 (ilimitado) |
Número máximo de arquivos |
y2upload-size |
10485760 (10 MB) |
Tamanho máximo por arquivo em bytes |
y2upload-txt |
texto padrão | Texto HTML exibido na zona de drop |
Y2Upload.getFiles(el) |
— | Retorna Array<File> dos arquivos selecionados |
yd:upload:add |
— | Disparado ao adicionar — detail.files (array completo) |
yd:upload:remove |
— | Disparado ao remover — detail.index |