fileUpload - Primefaces - RESOLVIDO

6 respostas
D

Boa tarde pessoal, tudo em ordem?
Pessoal, vamos la ... estou utilizando o fileUpload do Primefaces porem ao selecionar uma imagem ele não "entra" na classe que chamo.

Xhtml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:p="http://primefaces.org/ui"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:decorate template="/padrao.xhtml">
	<ui:define name="centro">
		<h:form enctype="multipart/form-data">
			<p:fileUpload
				fileUploadListener="#{uploadFotoBean.upload}"
				mode="advanced" update="messages" label="Choose a file" auto="true"
				sizeLimit="10485760" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />
			<p:growl id="messages" showDetail="true" life="5000" />
		</h:form>
	</ui:define>
</ui:decorate>
</html>

Bean

package formafit.ManagedBeans;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.primefaces.event.FileUploadEvent;
import org.primefaces.event.FlowEvent;

import formafit.controle.ControleFactory;
import formafit.entidades.Alunos;

@ManagedBean(name = "uploadFotoBean")
@RequestScoped
public class UploadFotoBean {

	private boolean skip;

	private Alunos alunos;

	private List<Alunos> lstAlunos = new ArrayList<Alunos>();

	public boolean isSkip() {
		return skip;
	}

	public void setSkip(boolean skip) {
		this.skip = skip;
	}

	public Alunos getAlunos() {
		return alunos;
	}

	public void setAlunos(Alunos alunos) {
		this.alunos = alunos;
	}

	public List<Alunos> getLstAlunos() {
		return lstAlunos;
	}

	public void setLstAlunos(List<Alunos> lstAlunos) {
		this.lstAlunos = lstAlunos;
	}

	  public void upload(FileUploadEvent event) {    
          
        String nomeImagem = event.getFile().getFileName();  
        
        System.out.println("nome da imagem é " + nomeImagem);
        
  }
}

Alguem sabe me dizer o pq não acessa, tb tentei utilizar o SessionScope e o ViewScope.

Vlwwww

6 Respostas

R

O arquivo que você está enviando é compatível com os valores definidos na tag allowTypes ?

M

Cara se ajudar eu fiz este post http://miguellimapj.blogspot.com.br/2012/10/fileupload-primefaces.html.

D

Colocou o filtro no web.xml ?

D

Boa noite pessoal, primeiramente agradeço aos posts com ajuda.
Não respondi antes que precisei ir para ma reunião.

Rodrigo, estou subindo sim uma imagem que a extensão esta no filtro, o problema é que ele nem chama o metodo no bean, ele aparece na tela como carregando e no final nao faz mais nada.

Miguel, vi o tutorial as libs que vc mencionou eu não tenho, vou inseri-las

d34d_d3v1l, não inseri o filtro no web.xml, se não for pedir demais pode me passar um exemplo do filtro?

Pessoal, mais uma vez agradeço a ajuda de todos.
Amanha volto a mexer nisso e funcionando posto aqui.
Vlwwww

Uma boa noite a todos.

[]s

D

Ta bom…

Vc precisa de algumas dependencias… Mas isso vc ja deve ter cobrido ne?

o Filter no web.xml

//considere:
<servlet>
    <servlet-name>facesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

....

	<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>facesServlet</servlet-name>  
    </filter-mapping>
D

Pessoal, primeiramente desculpem pela demora em postar o retorno.
Deu certo ... muito obrigado a todos pela ajuda.
Caso alguem precise, segue o codigo que foi feito.

Jar utilizados
- commons-io-2.4.jar
-commons-fileupload-1.2.2.jar

web.xml

<!-- ############################################# -->
<!-- # File upload                                      # -->
<!-- ############################################# -->
<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>
        org.primefaces.webapp.filter.FileUploadFilter
    </filter-class>
    <init-param>
        <param-name>thresholdSize</param-name>
        <param-value>51200</param-value>
    </init-param>
     <!-- Optional 
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>/var/bcom/temp</param-value>
    </init-param>
     -->
</filter>

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

xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:p="http://primefaces.org/ui"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:decorate template="/padrao.xhtml">
	<ui:define name="centro">
		<h:form enctype="multipart/form-data">
			<p:fileUpload mode="advanced"
				fileUploadListener="#{uploadFotoBean.handleFileUpload}"
				allowTypes="/(\.|\/)(gif|jpg|jpeg|gif|png|PNG|GIF|JPG|JPEG)$/"
				auto="true" />
		</h:form>
	</ui:define>
</ui:decorate>
</html>

Bean

package formafit.ManagedBeans;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;

@ManagedBean(name = "uploadFotoBean")
@SessionScoped
public class UploadFotoBean {

    public void handleFileUpload(FileUploadEvent event) {
        try {
            File targetFolder = new File("C:\\fotos");
            InputStream inputStream = event.getFile().getInputstream();
            OutputStream out = new FileOutputStream(new File(targetFolder,
                    event.getFile().getFileName()));
            int read = 0;
            byte[] bytes = new byte[1024];

            while ((read = inputStream.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }
            inputStream.close();
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

[]s

Criado 18 de março de 2013
Ultima resposta 25 de mar. de 2013
Respostas 6
Participantes 4