Artigo WebMobile 19 - Efetuando Upload de Arquivos com JSF e MyFaces

Primeiro explicaremos como o upload de arquivos funciona, mostrando aos leitores o código fonte do MyFaces e Commons File Upload, em seguinda, veremos uma aplicação de exemplo que permite ao usuário fazer upload de arquivos usando seus navegadores.

Esse artigo faz parte da revista WebMobile edição 19. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler este artigo em PDF

Java Web

Efetuando Upload de Arquivos com JSF e MyFaces

Andrei Cioroianu

Browsers web provêm uma forma simples para envio de arquivos para aplicações web, mas as versões atuais dos padrões Java web (servlets, JSP e JSF) não oferecem qualquer ajuda. Felizmente, existem outros tipos de framework, tais como Apache Commons File Upload, Apache MyFaces e Oracle ADF Faces, que implementam esta funcionalidade, fornecendo simples APIs e tags customizadas. A primeira metade deste artigo explica como o upload de arquivos funciona, mostrando aos leitores o código fonte do MyFaces e Commons File Upload. Isso é útil para se conhecer o que acontece internamente nesses frameworks de código aberto para usá-los eficientemente e estar apto para modificá-los se necessário. Na segunda metade deste artigo, encontraremos uma aplicação de exemplo que permite ao usuário fazer upload de arquivos usando seus browsers web.

 

Upload de Arquivo baseado na Web

O termo "upload" é algo utilizado em demasia. Um webmaster diria que ele faz o upload de um arquivo quando ele o publica em seu website. Um desenvolvedor web diria que ele implementa upload de arquivo quando ele cria um formulário e um script que permite que usuários regulares enviem arquivos usando seus browsers web.

Existe alguma sobreposição entre esses dois significados, porque um webmaster pode usar uma interface baseada na web para publicar arquivos (páginas, imagens, scripts, etc.). Companhias que hospedam web sites pessoais gratuitamente, tais como Yahoo, implementa o upload de arquivo baseado na web para permitir que pessoas publiquem suas páginas. Isso permite que qualquer pessoa com um browser web e acesso a Internet publique um website pequeno. No entanto, existem muitas formas melhores para publicar seu conteúdo web, tais como FTP ou FTP seguro. Neste caso, você usaria uma aplicação dedicada, tais como um cliente FTP, ao invés de seu browser web para fazer upload de seu conteúdo para o servidor web.

Este artigo discute upload de arquivo a partir do ponto de vista do desenvolver web. Por exemplo, uma aplicação de e-mail baseada na web, tal como Yahoo mail, implementa upload de arquivo de forma que os usuários possam enviar mensagens com anexos. Outro bom exemplo é um website de emprego que permite que você envie seu currículo para ser consultado. A aplicação de exemplo deste artigo computa os valores dos arquivos que fizeram upload. Você pode fazer qualquer coisa que você desejar com os arquivos carregados na aplicação, tais como armazenar seu conteúdo num banco de dados ou enviá-lo como anexo em um e-mail. Agora, vamos ver como implementar o upload de arquivos em uma aplicação web.

Um formulário HTML pode conter um ou mais elementos que o browser renderiza como campos de entrada, onde usuários podem entrar com caminhos de arquivo. Próximo a cada campo de entrada de arquivo, o browser web adiciona um botão que abre uma caixa de diálogo de arquivo, permitindo aos usuários selecionar um arquivo ao invés de entrar com o caminho (ver Figura 1).

Figura 1. Formulário web contendo um campo de entrada de arquivo

 Quando o usuário clica no botão Submit do formulário, o browser web codifica os dados do formulário, que inclui o conteúdo do arquivo selecionado junto com seu nome (ou caminho) e outros parâmetros do formulário. Então, o browser envia os dados do formulário codificado para o servidor web, que passa esses dados ao script especificado como atributo de ação da tag

. Se você desenvolve uma aplicação web em Java, o script de ação pode ser um servlet ou uma página JSP.

Visto que a codificação padrão dos dados do formulário e o método GET padrão não são adequados para " [...] continue lendo...

Artigos relacionados