a simplesmente não sei se funciona tipo assim ele "faz o upload " mas ele não guarda nem na pasta temporária
mas
por favor me ajudem como faço upload com JSF e salvar o caminho na base de dados ou pelo menos numa pasta reservada no projeto mesmo
tipo assim no exemplo tem uma classe assim:
packagecontrollers;importjava.io.IOException;importjava.util.logging.Level;importjava.util.logging.Logger;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.SessionScoped;importorg.primefaces.event.FileUploadEvent;importorg.primefaces.model.DefaultStreamedContent;importorg.primefaces.model.StreamedContent;/** *criado em 06/07/2010 * @author wagnerborges */@ManagedBean@SessioScopedpublicclassFileUploadController{privateStringnomeArquivoSelecionado;privateStreamedContentimagem;publicStreamedContentgetImagem(){returnimagem;}publicvoidsetImagem(StreamedContentimagem){this.imagem=imagem;}publicStringgetNomeArquivoSelecionado(){returnnomeArquivoSelecionado;}publicvoidsetNomeArquivoSelecionado(StringnomeArquivoSelecionado){this.nomeArquivoSelecionado=nomeArquivoSelecionado;}publicvoidfileUploadAction(FileUploadEventevent){try{setNomeArquivoSelecionado(event.getFile().getFileName());imagem=newDefaultStreamedContent(event.getFile().getInputstream());}catch(IOExceptionex){Logger.getLogger(FileUploadController.class.getName()).log(Level.SEVERE,null,ex);}}}
e a página JSF:
<?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"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:p="http://primefaces.prime.com.tr/ui"><h:head><title>Upload de Arquivos com primefaces</title></h:head><h:body><h:form><p:fileUploadauto="false"label="Selecionar..."allowTypes="*.jpg;*.png;*.gif;"multiple="false"description="Imagem"update="idarquivo,idimagem"fileUploadListener="#{fileUploadController.fileUploadAction}"/><br/>
Arquivo selecionado: <h:outputTextid="idarquivo"value="#{fileUploadController.nomeArquivoSelecionado}"/><br/><br/><p:graphicImageid="idimagem"value="#{fileUploadController.imagem}"/></h:form></h:body></html>
segundo o cara ele só mostra isso acontece mas
eu quero salvar ela numa pasta junto do projeto e salvar esse caminho no banco
dai eu achei esse fragmento:
publicvoidprocessFileUpload(FileUploadEventevent)throwsIOException{try{//Cria um arquivo UploadFile, para receber o arquivo do eventoUploadedFilearq=event.getFile();InputStreamin=newBufferedInputStream(arq.getInputstream());//copiar para pasta do projetoFilefile=newFile("D://doc//"+arq.getFileName());//O método file.getAbsolutePath() fornece o caminho do arquivo criado//Pode ser usado para ligar algum objeto do banco ao arquivo enviadocaminho=file.getAbsolutePath();FileOutputStreamfout=newFileOutputStream(file);while(in.available()!=0){fout.write(in.read());}fout.close();FacesMessagemsg=newFacesMessage("O Arquivo ",file.getName()+" salvo.");FacesContext.getCurrentInstance().addMessage("msgUpdate",msg);}catch(Exceptionex){ex.printStackTrace();}}
mas não faço a minima ideia onde e como coloca-lo
alguém pode me ajudar
por favor valeu
<filter><filter-name>PrimeFacesFileUploadFilter</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><init-param><param-name>uploadDirectory</param-name><param-value>C:\arquivos</param-value></init-param></filter><filter-mapping><filter-name>PrimeFacesFileUploadFilter</filter-name><servlet-name>FacesServlet</servlet-name></filter-mapping>beanpackagebr.com.projeto.controller;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.Serializable;importjava.util.ArrayList;importjava.util.List;importjavax.faces.application.FacesMessage;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.SessionScoped;importjavax.faces.context.FacesContext;importorg.primefaces.event.FileUploadEvent;importorg.primefaces.model.DefaultStreamedContent;importorg.primefaces.model.StreamedContent;importbr.com.projeto.beans.Arquivos;importbr.com.projeto.dao.HibernateDao;@SessionScoped@ManagedBeanpublicclassArquivosBeanimplementsSerializable{privatestaticfinallongserialVersionUID=1L;privateArquivosarquivo=newArquivos();privateList<Arquivos>arquivos=newArrayList<Arquivos>();@SuppressWarnings("unused")privateStreamedContentfile;publicStringfileUploadAction(FileUploadEventevent)throwsIOException{try{arquivo.setNome(event.getFile().getFileName());byte[]conteudo=event.getFile().getContents();Stringcaminho="C:\\arquivos\\"+event.getFile().getFileName();FileOutputStreamfos=newFileOutputStream(caminho);fos.write(conteudo);fos.close();HibernateDao<Arquivos>hibernateDao=newHibernateDao<Arquivos>(Arquivos.class);arquivo.setCaminho(caminho);arquivo.setTamanho(conteudo.length);StringnomeArquivo=arquivo.getNome();inte=nomeArquivo.lastIndexOf(".");arquivo.setTipo(nomeArquivo.substring(e));hibernateDao.salvar(arquivo);FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Arquivo Salvo!",arquivo.getNome()));}catch(Exceptione){FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_ERROR,"Erro!"," "+e));}finally{arquivo=newArquivos();arquivos=newArrayList<Arquivos>();file=null;}return"Arquivos.xhtml";}publicList<Arquivos>getListArquivos(){HibernateDao<Arquivos>hibernateDao=newHibernateDao<Arquivos>(Arquivos.class);arquivos=hibernateDao.getBeans();returnarquivos;}publicvoidremove(){try{HibernateDao<Arquivos>hibernateDao=newHibernateDao<Arquivos>(Arquivos.class);Integerid=arquivo.getId();arquivo=hibernateDao.getBean(id);newFile(arquivo.getCaminho()).delete();hibernateDao.deletar(arquivo);FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Arquivo Deletado!",arquivo.getNome()));}catch(Exceptione){FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_ERROR,"Erro!"," "+e));}finally{arquivo=newArquivos();arquivos=newArrayList<Arquivos>();file=null;}}publicStreamedContentgetFile()throwsFileNotFoundException{HibernateDao<Arquivos>hibernateDao=newHibernateDao<Arquivos>(Arquivos.class);Integerid=arquivo.getId();arquivo=hibernateDao.getBean(id);Stringcaminho=arquivo.getCaminho();FileInputStreamstream=newFileInputStream(caminho);returnfile=newDefaultStreamedContent(stream,caminho,arquivo.getNome());}publicvoidsetFile(StreamedContentfile){this.file=file;}publicArquivosgetArquivo(){returnarquivo;}publicvoidsetArquivo(Arquivosarquivo){this.arquivo=arquivo;}publicList<Arquivos>getArquivos(){returnarquivos;}publicvoidsetArquivos(List<Arquivos>arquivos){this.arquivos=arquivos;}}jsf<?xmlversion="1.0"encoding="ISO-8859-1"?><!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:p="http://primefaces.prime.com.tr/ui"><h:head><metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/><title>Arquivos</title></h:head><h:body><h:formenctype="multipart/form-data"update=":form:display"><p:growlid="messages"/><divalign="center"><p:panelheader="Arquivos"style="width:1050px"><ui:includesrc="/paginas/Menu.xhtml"/><p:fileUploadfileUploadListener="#{arquivosBean.fileUploadAction}"update="display"multiple="true"/><br/>´<p:dataTablevar="arquivos"value="#{arquivosBean.listArquivos}"widgetVar="arquivosTable"emptyMessage="Nenhum arquivos Encontrado Nessas Condições"rowStyleClass="#{empty rowIx or rowIx mod 2 ne 0 ? 'even-row' : 'odd-row'}"rowIndexVar="rowIx"id="display"rows="30"><f:facetname="header"><p:outputPanel><h:outputTextvalue="Procurar em todos os campos:"/><p:inputTextid="globalFilter"onkeyup="arquivosTable.filter()"/></p:outputPanel></f:facet><p:columnfilterBy="#{arquivos.id}"headerText="Código"footerText="Código"filterMatchMode="contains"style="width: 40px"><h:outputTextvalue="#{arquivos.id}"style="width: 40px"/></p:column><p:columnfilterBy="#{arquivos.nome}"headerText="Descrição"footerText="Descrição"filterMatchMode="contains"><h:outputTextvalue="#{arquivos.nome}"/></p:column><p:columnfilterBy="#{arquivos.tipo}"headerText="Tipo"footerText="Tipo"filterMatchMode="contains"style="width: 40px"><h:outputTextvalue="#{arquivos.tipo}"style="width: 40px"/></p:column><p:columnfilterBy="#{arquivos.tamanho}"headerText="Tamanho"footerText="Tamanho"filterMatchMode="contains"style="width: 140px"><h:outputTextvalue="#{arquivos.tamanho}"style="width: 140px"/></p:column><p:columnstyle="width:100px"><h:panelGridcolumns="2"styleClass="actions"cellpadding="2"><p:commandButtonimage="ui-icon-disk"title="Download"ajax="false"><f:setPropertyActionListenervalue="#{arquivos.id}"target="#{arquivosBean.arquivo.id}"/><p:fileDownloadvalue="#{arquivosBean.file}"/></p:commandButton><p:commandButtonimage="ui-icon-trash"title="Excluir"onclick="confirmation.show()"><f:setPropertyActionListenervalue="#{arquivos.id}"target="#{arquivosBean.arquivo.id}"/></p:commandButton></h:panelGrid></p:column></p:dataTable><p:confirmDialogid="confirmDialog"message="Confirma Exclusão?"severity="alert"widgetVar="confirmation"><p:commandButtonid="confirm"value="Sim"update="display, messages"oncomplete="confirmation.hide()"actionListener="#{arquivosBean.remove}"></p:commandButton><p:commandButtonid="decline"value="Não"onclick="confirmation.hide()"type="button"/></p:confirmDialog><style>.ui-datatable.ui-datatable-data.even-rowtd{background-color:#fcefa1;border-right:solid0px#4e6769;}.ui-datatable.ui-datatable-data.odd-rowtd{background-color:#f7f7f7;border-right:solid0px#4e6769;}</style></p:panel></div></h:form></h:body></html>
lembrando que eu salvo as imagens dentro de uma pasta c:/arquivos
J
joaoorso
Testei usando seu código …
Mas também nao chamou o método : fileUploadAction
-------------- CONSOLE ---------------
INFO: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
AVISO: JSF1091: Nenhum tipo de mime pôde ser encontrado para o arquivo dynamiccontent. Para resolver isso, adicione um mapeamento de mime-type ao web.xml do aplicativo.
INFO: Skipping call to libraryExists(). Please set context-param com.sun.faces.enableMissingResourceLibraryDetection to true to verify if library http://java.sun.com/jsf/composite/exporter actually exists
J
jaissonduarte
cara poderia postar os teus códigos
K
kelymaciel
Ei jaissonduarte, eu queria uma ajuda, vc tem msn ou gtalk? =)
J
jaissonduarte
ei kelymaciel
manda uma mp
J
joaoorso
Lá vai …
// web.xml<filter><filter-name>PrimeFacesFileUploadFilter</filter-name><filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class></filter><filter-mapping><filter-name>PrimeFacesFileUploadFilter</filter-name><servlet-name>FacesServlet</servlet-name></filter-mapping>//MeuBean.javaimportjava.io.Serializable;importjavax.faces.application.FacesMessage;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.ViewScoped;importjavax.faces.context.FacesContext;importorg.primefaces.event.FileUploadEvent;@ManagedBean(name="meuBean")@ViewScopedpublicclassMeuBeanimplementsSerializable{/** * */privatestaticfinallongserialVersionUID=1L;publicvoidhandleFileUpload(FileUploadEventevent){FacesMessagemsg=newFacesMessage("Succesful",event.getFile().getFileName()+" is uploaded.");FacesContext.getCurrentInstance().addMessage(null,msg);}publicvoidteste(){}}//upload.xhtml<htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:p="http://primefaces.org/ui"><h:head><title>Luirton</title></h:head><h:body><h:formenctype="multipart/form-data"><p:panelheader="Luirton - Upload exemplo ;)"><p:fileUploadfileUploadListener="#{meuBean.handleFileUpload}"mode="advanced"update="messages"multiple="true"allowTypes="/(\.|\/)(gif|jpe?g|png|JGP)$/"/><p:growlid="messages"showDetail="true"/></p:panel></h:form></h:body></html>
O método : handleFileUpload não é chamado …
Porém o browser faz um post para o servidor.
publicclassMeuBeanimplementsSerializable{privateStringnome;privateStringcaminho;//gets e set//coinstrutor}
e crio o seguinte código com os atributos e métodos:
importorg.primefaces.event.FileUploadEvent;importorg.primefaces.model.DefaultStreamedContent;importorg.primefaces.model.StreamedContent;importorg.primefaces.model.UploadedFile;@ManagedBean(name="meuMB")@SessionScopedpublicclassMeuMBimplementsSerializable{privateMeuBeanmeuBean;privateStreamedContentfile;publicvoidsetFile(StreamedContentfile){this.file=file;}publicStreamedContentgetFile(Documentodocumento)throwsFileNotFoundException{//essas variáveis locais eu uso para pegar o nome e a onde eu vou guardarStringarquivo=meuBean.getNome();Stringcaminho=meuBean.getCaminho();FileInputStreamstream=newFileInputStream(caminho);file=newDefaultStreamedContent(stream,caminho,arquivo);returnfile;}publicvoidfileUploadAction(FileUploadEventevent)throwsIOException{try{UploadedFilearq=event.getFile();InputStreamin=newBufferedInputStream(arq.getInputstream());Filefile=newFile("C:/diretório onde vou guardar/"+arq.getFileName());meuBean.setCaminho(file.getAbsolutePath());FileOutputStreamfout=newFileOutputStream(file);while(in.available()!=0){fout.write(in.read());}fout.close();FacesMessagemsg=newFacesMessage("O Arquivo ",file.getName()+" salvo.");FacesContext.getCurrentInstance().addMessage("msgUpdate",msg);}catch(Exceptionex){System.out.println("erro no upload "+ex.getMessage());}}}
Ele funciona somente se eu remover o trecho: enctype=“multipart/form-data”
No entanto, nenhum dos casos a chamada ao método : fileUploadAction acontece.
Também atualizei a versão do commons-io. de 2.0 para 2.3. Uúnico .jar o qual a versão não coincidia com a do exemplo.
Até o momento só tentativas frustradas. O listner continua surdo. :roll:
J
jaissonduarte
mostra a saída do terminal, ou algo parecido
coloca um system.out.println(“1”); no teu métoda para ver se é chamado ou não
L
leslie-UFT
Seguinte tem versoes do primefaces que pode dar alguma boberinha, eu utilizei os seguintes jar’s:
commons-fileupload-1.1.jar
commons-io-1.4.jar
primefaces-2.2.1.jar
Só adicionar ao projeto em anexo! Qualquer coisa so perguntar de novo.
Mais tem configuracao no web.xml