Olá desenvolvedores, no tutorial anterior “CAMADA DE MODELO: UPLOAD E DOWNLOAD” estruturamos a camada de modelo, criando no banco de dados os campos que irão receber a foto em miniatura (formato de texto), a extensão e a imagem em tamanho original. Neste tutorial criaremos um objeto no ManagedBean para que seja possível enviar o arquivo de “upload”.

UPLOAD

Como mencionado na sessão anterior é preciso possibilitar que um arquivo seja enviado para que seja feito um upload do mesmo para o sistema. Desse modo, no PessoaBean, criaremos um objeto do tipo Part do pacote “javax.servlet.http”.

O Part “pega” da tela o arquivo que foi selecionado e o cria temporariamente no lado do servidor para que possamos obtê-lo para o sistema. É preciso gerar também para este atributo os métodos Getters and Setters.

private Part arquivofoto;

Na primeirapagina.xhtml referenciaremos o “arquivo”. A ideia é que o usuário possa fazer o upload de uma foto para o seu perfil no sistema, assim, escolha um local que faça sentido para você para então proceder com a implementação. O componente a ser utilizado é o h:inputFile, que receberá um “id” e um value que é o atributo que referencia o atributo “arquivo” do tipo Part, no ManagedBean.

Lembrando que o campo também deverá receber uma descrição por meio do componente h:outputLabel.

Para que o formulário seja capaz de enviar um arquivo de upoload, a tag form deverá implementar o encyte, cujo valor é multipart/form-data.  O enctype é um atributo que especifica como os dados do formulário devem ser codificados ao serem enviados para o servidor.

<h: form id=”formPessoa” enctype =“multipart/form-data” ... >

TESTANDO A APLICAÇÃO

O uso do enctype pode incorrer em alguns bugs na aplicação, assim, após implementá-lo é importante testar. Desse modo no método salvar() da classe PessoaBean, imprima a imagem no console e execute em debug, para ter certeza que o arquivo está sendo enviado para o lado do servidor e que o fluxo de processamento segue normalmente.

EM POUCAS PALAVRAS

Apenas com esta implementação já conseguimos enviar o arquivo da tela para o lado do servidor. Assim, neste tutorial criamos no ManagedBean um atributo auxiliar que receberá o arquivo de forma temporária. Também adicionamos o campo para upload na tela. No próximo tutorial iremos possibilitar que o arquivo seja manipulado no sistema, convertendo um InputStream em um Array de bytes.