Upload de Imagen

6 respostas
ddark.emanu

Estou fazendo upload de uma imagem, mais não estou conseguindo gravá - la no banco de dados

View

<h:outputText value="Imagem: " />
                <br />
                <p:fileUpload id="imagem" label="Buscar" fileUploadListener="#{solicitacaoController.upload}" multiple="false"     
                               allowTypes="*.jpg;*.png;*.gif;" description="Images" update="imagemNome" auto="true"/>  
                <h:panelGrid columns="1" >
                    <h:outputText id="imagemNome" value="#{solicitacaoController.nomeImagem}" />
                    <h:commandLink id="excluirImg" action="#{solicitacaoController.excluirImagem}" value="Excluir Imagem" immediate="true"/>
                </h:panelGrid>

Faces Bean

@ManagedBean(name="solicitacaoController")
@RequestScoped
public class SolicitacaoController {

...
    private byte[] byteImg;
    private String nomeImagem;
    private Solicitacao solicitacao;

 public SolicitacaoController() {
        
        init();
    }
    
    private void init(){
        
        solicitacao = new Solicitacao();
        solicitacao.setTipoSolicitacao("INCLUIR");
        solicitacao.setSolicitante(getUsuarioLogado());  
        solicitacoes = new ArrayList<Solicitacao>();
        
        nomeImagem = null;
        byteImg = null;
                
         }

 public void upload(FileUploadEvent event) {  
       
        try{
           nomeImagem = event.getFile().getFileName();
           byteImg = event.getFile().getContents();
           
         }catch (Exception e){
            e.printStackTrace();
         } 
         
    } 

public String salvar() {
        
       if(byteImg != null){
           solicitacao.setImagem(byteImg);
        }    

       try{
           Session session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            session.save(solicitacao);
            session.getTransaction().commit();
            
            init();
            
           FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Solicitação Enviada com Sucesso!"));
           
       }catch(Exception e){
            FacesContext.getCurrentInstance().addMessage(null, 
                    new FacesMessage("Instabilidades no Envio da Solicitação,por favor entre em Contato com o Departamento de T.I."));
       }
            
       return "index";     
    }

...

Entity

public class Solicitacao implements Serializable{
...
 private byte[] imagem;

 @Lob 
    public byte[] getImagem() {
        return imagem;
    }

 public void setImagem(byte[] imagem) {
        this.imagem = imagem;
    }

...

}

6 Respostas

fnandos

Estou com o mesmo problema, você configurou o web.xml?

<filter>	
        <filter-name>PrimeFaces FileUpload Filter</filter-name>	
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    </filter>	
    <filter-mapping>	
        <filter-name>PrimeFaces FileUpload Filter</filter-name>	
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

e colocou no classpath da sua aplicação as libs:

commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar

Meu problema é que sempre dá um HTTP error e nunca chega a entrar no método. Se alguém já conseguiu fazer funcionar podia dizer como né?

ddark.emanu

Sim…

fiz essa configuração :

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>
        org.primefaces.webapp.filter.FileUploadFilter
    </filter-class>
        <init-param>
            <param-name>uploadDirectory</param-name>
            <param-value>C:/temp</param-value>
        </init-param>
        <init-param>
            <param-name>thresholdSize</param-name>
            <param-value>10000</param-value>
        </init-param>
    </filter>   

    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

assim ele consegui fazer upload, dentro da sessão consigo pegar os bytes da imagem , nome só que não consigo gravar a imagem em um campo BLOB do oracle

fnandos

Blob no Oracle é bem problemático, sei que precisa passar um blob vazio para ele antes de gravar o arquivo, achei esse post aqui

http://www.guj.com.br/java/16617-hibernate-gravando-blob-no-oracle

não sei se você está usando hibernate ou jdbc mas vê se isso te ajuda

ddark.emanu

Percebi isso mesmo , estou usando hibernate … vou dar uma olhada vlw

eveban

Conseguiu resolver seu problema, estou com problemas para salvar no sql server, esta enviando null.

Lindberg

ver se esse link ajuda …

http://www.devmedia.com.br/articles/viewcomp.asp?comp=3572&hl=commons

Criado 8 de julho de 2011
Ultima resposta 18 de ago. de 2011
Respostas 6
Participantes 4