SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
03.12.2024

Arraste e Solte Arquivos em Input HTML: Compatibilidade e Dicas

Resposta Rápida

Crie uma área de arrastar e soltar para seu elemento de upload de arquivos em HTML. Para fazer isso, utilize o rastreamento de eventos para dragover e drop em JavaScript. Veja uma maneira curta e clara de implementá-lo:

// Obtendo o elemento de input de arquivos e a área de despejo
var fileInput = document.getElementById('fileInput');
var dropArea = document.getElementById('dropArea');

// Manipulando o evento de passar o mouse por cima
dropArea.addEventListener('dragover', e => {
  e.preventDefault();
  dropArea.classList.toggle('active', true); // Destacar visualmente a área de despejo
});

// Manipulando o evento de despejo de arquivos
dropArea.addEventListener('drop', e => {
  e.preventDefault();
  dropArea.classList.toggle('active', false); // Remover destaque visual
  fileInput.files = e.dataTransfer.files; // Atribuir os arquivos ao elemento de input
});

Aqui está a marcação HTML com a área de arrastar e soltar e um elemento de input de arquivo oculto:

<div id="dropArea">Arraste os arquivos aqui.</div>
<input type="file" id="fileInput" hidden>

Com essa abordagem, você pode direcionar os arquivos arrastados pelo usuário diretamente para o elemento de upload — isso é muito conveniente para o usuário.

Vamos Adicionar Usabilidade?

Não se esqueça de envolver o usuário incorporando transições CSS para efeitos de hover na área de arrastar e soltar. Use pseudo-classes, como :valid, para estilizar um campo de input válido. Além disso, forneça vários mecanismos de seleção de arquivos — por exemplo, botões ou elementos div que imitem cliques no input oculto.

Princípios Básicos

Considere o suporte para lidar com múltiplos arquivos. Certifique-se de que sua solução funcione corretamente em todos os navegadores populares — Chrome, Firefox, IE10+ e Safari. Diversifique os efeitos interativos. Em particular, deixe o elemento de input seguir o movimento do cursor, tornando a interface mais intuitiva.

A área de despejo deve estar preparada para limitar os uploads de arquivos à página ou a uma parte específica dela. Além disso, prepare o tratamento do lado do servidor para os uploads.

Equilíbrio e Controle

Verifique o suporte ao HTML5 nos navegadores e ofereça mecanismos alternativos para navegadores mais antigos ou que não suportem HTML5. Evite que usuários experientes enfrentem JavaScript desnecessário para uma interação mais rápida e eficiente.

Visualização

Vamos descrever o arquivo como um avião de papel (📄✈️) e imaginar que ele está indo em direção à caixa de correio do formulário HTML (📫):

Antes de arrastar:
📄✈️    ➡️️ 🚫📫

Durante o arrasto:
📄✈️ ✈️ ✈️ ➡️️ ✅📫

Após o arrasto:
🚪📫 (📄✈️ dentro)

Ajude seu 📄✈️ a chegar em 📫 — e o upload será bem-sucedido!

**Elemento do Formulário:**  [___📫___]
**Seu Arquivo:**            📄✈️
**Ação:**                 Arraste 📄✈️ sobre 📫
**Resultado:**            Arquivo enviado com sucesso!

Pense no Futuro: Acessibilidade e Design de UX

Crie uma área de arrastar e soltar visualmente compreensível. Utilize conteúdo descritivo e sinais visuais, além de adicionar explicações textuais para usuários com deficiências auditivas. Destaque o status ativo da área de despejo ao mover um arquivo.

Em Conclusão: Segurança e Desempenho

Não se esqueça da segurança da aplicação, filtre tipos de arquivos no lado do cliente e sanitize os arquivos enviados no servidor. Ao trabalhar com arquivos grandes, utilize um mecanismo de fragmentação para prevenir falhas e aumentar o desempenho.

Recursos Úteis

  1. API de Arrastar e Soltar HTML - Web APIs | MDN — documentação e exemplos sobre a API de Arrastar e Soltar HTML.
  2. Como Criar um Elemento HTML Arrastável — tutorial sobre como criar elementos HTML/CSS/JS arrastáveis.
  3. Ler arquivos em JavaScript | Artigos | web.dev — guia para leitura de arquivos em JavaScript, que é particularmente importante para arrastar e soltar arquivos.
  4. Upload de Arquivos por Arrastar e Soltar | CSS-Tricks — guia atualizado sobre como implementar o arrastar e soltar de arquivos para uploads.
  5. Padrão HTML — padrão oficial para o mecanismo de upload de arquivos em HTML.
  6. Entrada e manipulação de arquivos por arrastar e soltar — discussão no Stack Overflow com muitos exemplos e soluções.
  7. GitHub - mailru/FileAPI: FileAPI — um conjunto de ferramentas JavaScript para trabalhar com arquivos — biblioteca JavaScript para implementar múltiplos uploads de arquivos e funcionalidade de arrastar e soltar.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!