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.