Pessoal,estou fazendo um upload usando primefaces e preciso pegar o diretório do arquivo que o usuário selecionou, o meu código esta da seguinte forma:
como assim?
você não quer guardar o arquivo enviado em algum lugar?
seria isso,
já que não tem muito sentido pegar da maquina do usuário o caminha que esta em sua maquina
para fazer o upload eu faço isso:
public void fileUploadAction(FileUploadEvent event) throws IOException {
try {
UploadedFile arq = event.getFile();
InputStream in = new BufferedInputStream(arq.getInputstream());
File file = new File("/home/ifrs/img/" + arq.getFileName());//o diretório onde será guardado o arquivo
current.setCaminho(file.getAbsolutePath());//é um atributo meu que chamei de caminho :D
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();
}
}
mas para upload não é apenas pegar o arquivo e guarda-lo num diretório
ai o caminho mais o arquivo seria uma String mais ou menos assim
“c:/arquivos/ola_mundo.pdf”
que você armazena num banco ou sei lá
[quote]
Eu quero só que me retorne o diretório+arquivo que o usuário selecionou[/quote]
só para entender esse arquivo mais caminho seria na maquina do usuário
ou da maquina onde fica sua aplicação (servidor)
O “arquivo”+“caminho” é da maquina do cliente, eu só quero simplismente pegar esse link,entendeu?A caixa de dialogo abre, o usuário seleciona o arquivo, ai meu sistema pega o caminho do arquivo e o nome que o usuário selecionou.
[quote=Luciano_Lopes]Pessoal,estou fazendo um upload usando primefaces e preciso pegar o diretório do arquivo que o usuário selecionou, o meu código esta da seguinte forma:
No momento só estou conseguindo retornar o nome do arquivo.[/quote]
Se você examinar o tráfego HTTP resultante de tal transação (usando simplesmente upload em HTML), irá constatar que apenas o nome do arquivo, sem o diretório, é transmitido, isso por razões de segurança do browser. Se precisar (sei lá por quê) da informação completa, você precisaria de uma outra maneira de subir arquivos.
Não sei se alguma biblioteca em Flash consegue pegar o diretório. Dê uma experimentada no SWFUpload.
to tentando chamar o jfilechooser por um commandButton mas da essa exceção:
[code]SEVERE: javax.el.MethodNotFoundException: Method not found: control.FormasPagamentoBean@e73af3.upload()
at org.apache.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:225)
at org.apache.el.parser.AstValue.invoke(AstValue.java:253)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:153)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
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:409)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at dao.LoginDAO.doFilter(LoginDAO.java:300)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
12/03/2012 13:59:00 com.sun.faces.context.AjaxExceptionHandlerImpl log
SEVERE: JSF1073: javax.faces.event.AbortProcessingException obtido durante o processamento de INVOKE_APPLICATION 5: UIComponent-ClientId=j_idt543:j_idt545, Message=Method not found: control.FormasPagamentoBean@e73af3.upload()
12/03/2012 13:59:00 com.sun.faces.context.AjaxExceptionHandlerImpl log
SEVERE: Method not found: control.FormasPagamentoBean@e73af3.upload()
javax.faces.event.AbortProcessingException: Method not found: control.FormasPagamentoBean@e73af3.upload()
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
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:409)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at dao.LoginDAO.doFilter(LoginDAO.java:300)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.el.MethodNotFoundException: Method not found: control.FormasPagamentoBean@e73af3.upload()
at org.apache.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:225)
at org.apache.el.parser.AstValue.invoke(AstValue.java:253)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:153)
… 34 more
[/code]
eu “resolvi” usando seu código, ainda estou com um probleminha na hora de exibir o jfilechooser, ele fica escondido atraz do navegador ai só aparece quando dou alt+tab, sabe como resolver isso?
public class FileChooser {
public String path() {
String caminho = null;
JFileChooser arquivo = new JFileChooser();
int retorno = arquivo.showOpenDialog(null);
if (retorno == JFileChooser.APPROVE_OPTION) {
System.out.println(arquivo.getSelectedFile().getAbsolutePath());
caminho = arquivo.getSelectedFile().getAbsolutePath();
} else {
System.out.println(“não abriu”);
}
return caminho;
}
}
[/code]
Ele retorna o caminho selecionado… só que me falaram que quando vc colocar no servidor, não vai aparecer para selecionar o arquivo… o que fiz foi gravar em um dir do servidor, e la eu pego o arquivo…
Sei que o tópico é antigo mas mesmo assim vou responder Quando fiz o tópico consegui usar o jfilechooser com o código que esta postado no tópico mas durante o uso ele apresenta alguns problemas na exibição, as vezes ele exibe tranquilamente, outras vezes você tem que dar alt+tab para ele poder ser exibido em primeiro plano. Resolvi usar o upload do primefaces(3.x) e resolveu meu problema, bom fica ai a dica