Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
HTML5 - Upload de vários arquivos com apenas um INPUT
Colaboração: Rafael Kellermann Streit
Data de Publicação: 13 de maio de 2010
Antes de existir o HTML5, as únicas possibilidades de fazer upload de vários arquivos sem usar vários inputs era fazendo gambiarras com o Flash. Com o tempo vieram várias (ótimas) soluções, desenvolvidas em JavaScript. Mas, nada tão fácil de se implementar como colocar uma propriedade "multiplo" no campo input.
Hoje já é possível criar um sistema de upload, com a possibilidade de selecionar vários arquivos utilizando apenas um input (HTML) e a regra de upload básica, usando PHP. Vamos produzir.
Implementando o input
<!-- Input file, com o multiple do lado,
para indentificar que o usuário vai poder adicionar
mais de um arquivo de uma vez só. -->
<input name="uploads[]" type=file multiple />
Para controlar o upload no PHP, é bem simples. Os arquivos serão enviados como um array, neste caso, você terá que fazer um foreach e um upload individual para cada arquivo. Observem o código abaixo.
# Declarar a variável "i", que será nosso controle, para que não haja
# loop infinito.
$i = 0;
# Faz um loop conforme o número de arquivos
foreach ($_FILES["uploads"]["error"] as $key => $error) {
# Definir a pasta que os arquivos serão "upados".
$pasta = "fotos/_" . $_FILES["uploads"]["name"][$i];
# Aqui, você faz o upload do arquivo, utilizando a classe que você
# tem aí.
$ftp->upload($_FILES["uploads"]["tmp_name"][$i], $pasta);
# Agora o arquivo já foi upado, pode fazer alguns scripts adicionais, como por exemplo
# adicionar o nome dele no banco de dados, ou talvez alertar o nome de cada arquivo.
# Incrementar algum um valor a mais na variável "i" para que não ocorra loop infinito.
++$i;
}
Esta implementação tem apenas um detalhe: Não funciona no Internet Explorer.
É isto aí, qualquer dúvida deixem um comentário aqui.
Meu twitter: http://www.twitter.com/rafaelks
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
12 Abr 2012, 19:20
Tem uma coisa, quantas vezes eu já perdi muito tempo temtando fazer funfar algo no IE, na parte do site, tudo bem, deve funcionar perfeitamente, mas em partes do sistema, em que o usuário vai usar, você deve dizer que como ele implementando um novo sistema, ele deve se adequar, assim deve usar um navegador, até pode ser o IE, mas tem ser +9.
27 Out 2011, 11:29
06 Jun 2011, 22:25
1: Leia o artigo completo, o autor já havia dito que não funciona no IE;
2: Use o Firefox;
Parabéns pela solução.
01 Jun 2011, 11:12
06 Mai 2011, 16:34
Funcionou perfeitamente, era justamente o que eu procurava!!!!! parabens!!!!
27 Dez 2010, 16:51
Este código não funciona no navegador Internet Explorer.
19 Nov 2010, 15:17
rafa.alves19@uol.com.br
04 Out 2010, 18:26
03 Out 2010, 11:53
uso navegador Google Chorme
01 Ago 2010, 10:30
13 Jul 2010, 15:53
Ja faz algum tempo que tento desenvolver isto e não estava conseguindo.
Procurei em vários foruns mais nãoobtive sucesso..
Muito obrigado.
E mais uma vez parabéns..
Grande abraço




