Upload de imagem com jsf

4 respostas
mfbottoni

Boa tarde!

Estou criando uma página onde deixarei o usuário fazer um upload de uma imagem.
Estou usando o seguinte código na página jsp

<t:inputFileUpload id="myFileId"
         value="#{NovoNegocioBean.logo}"
         storage="file"
         required="true"/>

Este NovoNegocioBean é um Bean Gerenciado e logo é um String usado para acessar o “value”.
Até aqui tudo bem, eu rodo á página, seleciono um arquivo no meu computador e o Bean pega esse value.

Agora eu queria fazer o upload dessa imagem para alguma pasta do servidor. Mas estou completamente perdido. Nunca fiz isso antes e não sei por onde começar.

Gostaria que alguém me desse alguma dica, qualquer coisa ajuda :slight_smile:

Muito obrigado!
Abraço, Bottoni

4 Respostas

mfbottoni

Boa noite.

Andei pesquisando aqui no GUJ e encontrei um tópico antigo que fala exatamente sobre esse meu problema:

[url]http://www.guj.com.br/posts/list/123958.java[/url]

Fiz o que falava la mas ainda estou com algumas dúvidas.

Usei os seguintes códigos:
private UploadedFile Logomarca = null;
<h:form enctype="multipart/form-data">     
     <t:inputFileUpload storage="file" value="#{NovoNegocioBean.logomarca}"/>
     <h:commandButton action="#{NovoNegocio.CriaNegocio}"/>
     <br/>
</h:form>
public String CriaNegocio () {
         FacesContext ctx = FacesContext.getCurrentInstance();  
           
         ServletContext servletContext =  (ServletContext)ctx.getExternalContext().getContext();  
   
         //no contexto web, deverá existir uma pasta chamada temp  
         String path = servletContext.getRealPath("/temp");  
   
         String arquivo = Logomarca.getName();
   
         //local onde será gravado o arquivo no contexto web (o arquivo será renomeado para teste.txt)  
         //isto dentro da pasta (contexto)/temp  
         String fullPath = path + "/teste.txt";  
   
         String contentType = Logomarca.getContentType();
   
         ctx.getExternalContext().getApplicationMap().put("fileupload_type", contentType);  
         ctx.getExternalContext().getApplicationMap().put("fileupload_name", arquivo);  
   
         File file = new File(fullPath);
          
         BufferedInputStream bufferedInputStream = null;
         FileOutputStream fileOutputStream = null;
         // Salvando o arquivo
         try {
             bufferedInputStream = new BufferedInputStream(Logomarca.getInputStream());
             fileOutputStream = new FileOutputStream(file);  
             byte[] buffer = new byte[1024];  
             int count;  
             while ((count = bufferedInputStream.read(buffer)) > 0)  
                 fileOutputStream.write(buffer, 0, count);  
                           
         } catch (IOException e) {  
             e.printStackTrace();  
         } finally {  
             try {  
                 bufferedInputStream.close();  
             } catch (IOException e) {  
                 e.printStackTrace();  
             }  
             try {  
                 fileOutputStream.close();  
             } catch (IOException e) {  
                 e.printStackTrace();  
             }  
         }

         return null;
    }

Quando eu executo a página, não dá nenhum erro e nenhuma exceção, mas o arquivo não vai para lugar algum!!!

Acho que o problema pode ser aqui:
//no contexto web, deverá existir uma pasta chamada temp  
         String path = servletContext.getRealPath("/temp");

O que devo colocar no lugar de "/temp" para fazer os arquivos serem salvos, por exemplo em uma pasta "Pasta01" localizada no mesmo diretório da minha página jsp?

Muito obrigado!
Abraço, Bottoni

thiago.correa

Acho interessante você colocar o caminho relativo a raiz da tua aplicação!

mfbottoni

Sim sim :slight_smile:
É exatamente isso que eu queria!
Como faço pra fazer o caminho relativo ser a raiz???

Abraço, Bottoni

W

a principio não há nada de errado com seu codigo. vc não ve a imagem gravada porque se trata de uma pasta temp.

Criado 16 de abril de 2010
Ultima resposta 31 de mar. de 2012
Respostas 4
Participantes 3