Oi
Eu estou desenvolvendo um projeto web usando prime faces e estou com a seguinte dificuldade.
Eu quero fazer o upload de uma imagem e salvar ela em disco em uma pasta temporária para ser acessada pela minha página
por exemplo (http://localhost:8084/webApp/tmp/imagem.jpg)
Com o código que eu fiz até agora eu consegui salvar a imagem em disco passando um endereço no disco local mas quando eu salvo no contexto do projeto para ser acessada pela página não funciona.
Quando eu salvo
“D:\imagem.jpg” - Funciona
“/imagem.jpg” ou “./imagem.jpg” - Não Funciona
Ai vão os códigos
Página Web
<?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:prime="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title></title>
</h:head>
<h:body>
<h:form>
<prime:fileUpload fileUploadListener="#{indexBean.uploadLogo}" label="Selecionar" allowTypes="*.jpg; *.png; *.gif;" multiple="false" auto="true" description="Arquivo de Imagem" />
</h:form>
</h:body>
</html>
Função do Bean
...
public void uploadLogo(FileUploadEvent evt) {
try {
setLogo((DefaultUploadedFile) evt.getFile());
imagemURL = "./tmp/" + evt.getFile().getFileName();
FileOutputStream fos = new FileOutputStream(imagemURL);
fos.write(evt.getFile().getContents());
fos.flush();
fos.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(IndexBean.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(IndexBean.class.getName()).log(Level.SEVERE, null, ex);
}
}
...
Mensagem de Erro
SEVERE: null
java.io.FileNotFoundException: .\tmp\Tulips.jpg (O sistema não pode encontrar o caminho especificado)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
at kprojects.clickentregas.controle.bean.IndexBean.uploadLogo(IndexBean.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98)
at org.primefaces.component.fileupload.FileUpload.broadcast(FileUpload.java:238)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:740)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:943)
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:619)