terça-feira, 4 de fevereiro de 2014

Upload de Múltiplos Arquivos

Estava desenvolvendo um protótipo e chegou num momento que precisava fazer upload de múltiplos arquivos de uma vez. O JSF não oferece esta opção ainda e nem mesmo o IceFaces. Por outro lado, o Primefaces oferece a melhor solução no momento, mas não optei por utilizar este framework devido a política que atualização adotada pela equipe de desenvolvimento.

Então, fiz pesquisas e encontrei soluções em HTML5, Javascript e Servlet, mas não tudo junto; faltava juntar os pedaços e os resultados são apresentados neste artigo. A imagem abaixo mostra como ficou a parte gráfica de upload de múltiplos arquivos.


Esta solução permite que vários arquivos sejam selecionados e enviados para o servidor e uma barra de progresso indica a evolução da transmissão dos dados, bem como o percentual enviado. A tabela com a lista de arquivos somente surge após a seleção dos arquivos e portanto ela é criada dinamicamente pelo Javascript. A barra de progresso também é atualizada pelo Javascript, mas trata-se de um elemento do HTML5.

Do lado do servidor, uma única Servelet é responsável pelo recebimento e persistência dos arquivos. Não farei comentários deste código que é de autoria John Yeary do blog Java Evangelist.

Do lado cliente, o Javascript originalmente foi codificado por Shiv Kumer do blog Matlus. O artigo deste propõe exatamente o que eu desejava, mas eu não fui capaz de replicar o trabalho de Shiv Kumar conforme descrito. Por este motivo, a partir do trabalho dele e de John Yeary, eu desenvolvi uma outra solução.

O resultado final ficou muito bom, porém merece ser testado em diversos navegadores. Há muito o que melhorar no código, mas já é um ótimo começo!

Download:

O código deste protótipo pode ser baixado pelo link abaixo. O projeto foi desenvolvido usando Maven, JEE 7, servidor Glassfish 4 e navegador Firefox 26.


Referências:

Nenhum comentário:

Postar um comentário