Salvar Imagem usando Primefaces

5 respostas
R

PrezadoS estou desenvolvendo uma tela de cadastro de contatos onde tenho a foto
( usando postgre como banco ), as tecnologias utilizadas no projeto são
JSF 2 como View, Spring, JPA EclipseLink, Primefaces e para o desenvolvimento Eclipse.
a ideia inicial seria inserir a imagem no banco, poderia até guardar em uma pasta mais
não atentei ainda para os pros e contra

No componente p:fileUpload mais, qdo eu clico no componente nada ocorre, nem erro
ocorre e eu ja olhei o MB, o web.xml até a vesao do Primefaces ta certa porque ja
observei que a 2.1 não rola.

Bem tudo parece simples, ja consultei um post do benignosales que desenvolve este assunto
e aqui mesmo no grupo mais eu até diria que o problema maior é que não ocorre erro pra correr
atras.

Alguem teria alguma dica do que eu posso verificar?

5 Respostas

R

Quando vc usa o upload do primefaces ele tem q passa em um método dele que você implementa, não lembro o nome direito, acho eu que é handlefileupload, ele está passando lá?

D
public void processFileUpload(FileUploadEvent event) throws IOException {
		try {
			UploadedFile arq = event.getFile();
			InputStream in = new BufferedInputStream(arq.getInputstream());
			File file = new File("C://arquivosDiego//" + arq.getFileName());

			FileOutputStream fout = new FileOutputStream(file);

			while (in.available() != 0) {
				fout.write(in.read());
			}
			fout.close();
			FacesMessage msg = new FacesMessage("O Arquivo ", file.getName()
					+ " salvo.");
			FacesContext.getCurrentInstance().addMessage("msgUpdate", msg);
		}
		catch (Exception ex) {
			ex.printStackTrace();
		}
	}


/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<p:fileUpload label="Procurar..." allowTypes="*.doc"
	id="enviaProjeto"
	fileUploadListener="#{controller.processFileUpload}"
        sizeLimit="9999999" auto="true" />
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<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>
H

E também não pode esquecer de colocar todas as bibliotecas necessárias.

R

Olá a todos , antes… obrigado ai pela interação

então deixa ver… vai o codigo na classe que é o controller

public void handleFileUpload(FileUploadEvent event) {
		
		try {
			imagem = new DefaultStreamedContent(event.getFile().getInputstream());
			byte[] foto = event.getFile().getContents();
			
			this.contato.setConFoto(foto);			
			
			
		} catch (IOException ex ) {
			ex.printStackTrace();  
            return;  
		}
		
	}

sobre as bibliotecas sim estão no projeto

commons-io-2.1
commons-fileupload-1.2.2
o primefaces2.2

a configuracao do filtro no web.xml

e na pagina

<h:panelGrid id="imagemContato" columns="1" style="margin-bottom:10px;height : 247px; width : 222px;">
  	                   <br/>&nbsp;&nbsp;&nbsp;&nbsp;
    	                   <p:graphicImage id="imagem" cache="false" value="#{contatoC.contato.conFoto}"/>
    	                   <br/>

                       <p:fileUpload fileUploadListener="#{contatoC.handleFileUpload}" />
R

Diego

Vi que a configuracao do web.xml vc especifica o local onde o upload deverá ser feito, entre outras coisas, bem
eu realmente não coloquei estas informações ou seja peguei realmente como consta no manual do primefaces

é realmente necessario isto, seria então a causa do problema?
mais então definindo o caminho eu teria que colocar “o drive” o “caminho”… haveria como
haveria como especificar uma pasta dentro do contexto?

Criado 11 de novembro de 2011
Ultima resposta 11 de nov. de 2011
Respostas 5
Participantes 4