se alguém poder passar um exemplo seria ótimo, já fiz igual a documentação do PrimeFaces mas também não funcionou
G
ganondorfan
É bom que isso fique documentado aqui no GUJ mesmo, quebrei minha cabeça loucamente com esse componente deles e depois acabei descobrindo que a documentação do site deles está incompleta (showcase).
Para fazer o upload de arquivos funcionar é necessário ter as bibliotecas commons-io e commons-fileupload no class-path e mapegar um filtro no web.xml
publicvoidcarregarArquivo(FileUploadEventevent)// metodo chamado quando o arquivo acaba de carregar no serverSidethrowsFileNotFoundException,IOException{FacesMessagemsg=newFacesMessage("Sucesso "+event.getFile().getFileName()+" foi carregado.",event.getFile().getFileName()+" foi carregado.");// mensagem pra saber se ouve sucessoarquivo=event.getFile().getFileName();// pego o nome do arquivoStringcaminho=FacesContext.getCurrentInstance().getExternalContext().getRealPath("\\fotos\\"+arquivo);// diretorio o qual vou salvar o arquivo do upload, equivale ao nome completamente qualificadobyte[]conteudo=event.getFile().getContents();// daqui pra baixo é somente operações de IO.FileOutputStreamfos=newFileOutputStream(caminho);fos.write(conteudo);fos.close();}
Espero ter ajudado.
J
joaoorso
Olha … Aqui no meu caso, esse componente não funcionou nem com reza brava !
O pior é que consegui rodar o exemplo que postaram aqui no guj :
existem varias coisinhas para vc mudar por exemplo vc está cometendo o mesmo erro que eu penei para sanar, vc não está mapeando a url no filter nas configurações do Web.xml , depois de corrigir tente desenvolver o primeiro modelo proposto pela documentação do PrimeFaces
J
joaoorso
// No web.xml tentei : <url-pattern>/*</url-pattern><url-pattern>/faces/*</url-pattern><url-pattern>*.xhtml</url-pattern><servlet><servlet-name>DownloadServlet</servlet-name><servlet-class>servlet.DownloadServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>DownloadServlet</servlet-name><url-pattern>/download-servlet/</url-pattern></servlet-mapping>// XHTML<htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:p="http://primefaces.org/ui"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:ui="http://java.sun.com/jsf/facelets"><h:head><title>666</title></h:head><h:body><h:formenctype="multipart/form-data"><p:fileUploadfileUploadListener="#{meuBean.handleFileUpload}"multiple="true"/></h:form></h:body></html>importjavax.faces.bean.ManagedBean;importjavax.faces.bean.ViewScoped;importorg.primefaces.event.FileUploadEvent;importorg.primefaces.model.UploadedFile;@ManagedBean(name="meuBean")@ViewScopedpublicclassMeuBean{publicvoidhandleFileUpload(FileUploadEventevent){System.out.println("Chamou ... ********************");UploadedFilefile=event.getFile();//application code}}
primefaces-3.1.1 (1).jar
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
Como tá no users_guide
Mas também tentei
primefaces-3.1.1 (1).jar
commons-io-2.3.jar
commons-fileupload-1.2.2.jar
Adicionei os jars :
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
ao build path e agora funcionou … ! (nossa que surra desse componente )
R
rh_pestana
Boa tarde,
Comigo aconteceu a mesma coisa, funcionava o exemplo postado acima e no meu projeto não… aí identifiquei que no filtro eu tava colocando a minha classe e não: org.primefaces.webapp.filter.FileUploadFilter
Quando corrigi isso passou a funcionar, porém ainda tenho uma dúvida, o componente filepuload só gera um arquivo temporário do arquivo que foi feito o uploade e eu tenho que fazer uma cópia “na mão” depois??? é esse o esquema mesmo???
Obrigado,
J
joaoorso
Você vai ter um UploadedFile na mão.
Aí vc faz o que quiser com ele: Salva em disco, em banco, joga fora …