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:
publicvoidfileUploadAction(FileUploadEventevent)throwsIOException{try{UploadedFilearq=event.getFile();InputStreamin=newBufferedInputStream(arq.getInputstream());Filefile=newFile("/home/ifrs/img/"+arq.getFileName());//o diretório onde será guardado o arquivocurrent.setCaminho(file.getAbsolutePath());//é um atributo meu que chamei de caminho :D 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();}}
L
Luciano_Lopes
Eu quero só que me retorne o diretório+arquivo que o usuário selecionou
J
jaissonduarte
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á
Eu quero só que me retorne o diretório+arquivo que o usuário selecionou
só para entender esse arquivo mais caminho seria na maquina do usuário
ou da maquina onde fica sua aplicação (servidor)
L
Luciano_Lopes
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.
Ou da pra chmar o jfilechooser por uma página web?
J
jaissonduarte
só achei o exemplo completo heheheheh
é só você pegar
String caminho = x.getSelectedFile().getPath();
System.out.println("caminho: " + caminho);
e adaptar no seu sistema web
paz mano
E
entanglement
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.
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.
L
Luciano_Lopes
tem como chmar o jfile chooser no browser?
L
Luciano_Lopes
to tentando chamar o jfilechooser por um commandButton mas da essa exceção:
Consegui fazer chamar o filechooser, o problema agora é que ele só aparece na tela quando dou alt+tab, alguem sabe como resolver isso?
J
jaissonduarte
ei amigo tenta ai
importjava.io.*;importjavax.faces.application.FacesMessage;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.RequestScoped;importjavax.faces.context.FacesContext;importjavax.swing.JFileChooser;importorg.primefaces.event.FileUploadEvent;importorg.primefaces.model.UploadedFile;@ManagedBean(name="upload")@RequestScopedpublicclassUpload{privateJFileChooserchooser;privateArquivoarquivo;publicvoidfileUploadAction(FileUploadEventevent)throwsIOException{try{UploadedFilearq=event.getFile();InputStreamin=newBufferedInputStream(arq.getInputstream());Filefile=newFile("/home/ifrs/img/"+arq.getFileName());//o diretório onde será guardado o arquivo arquivo.setArquivo(file.getAbsolutePath());//é um atributo meu que chamei de caminho :D chooser.getSelectedFile().getPath();System.out.println(chooser);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();}}}
e a tela
<?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>Facelet Title</title></h:head><h:body><h:form><p:fileUploadauto="false"label="Selecionar..."allowTypes="*.jpg;*.png;*.gif;"multiple="false"description="Imagem"update="idarquivo,idimagem"fileUploadListener="#{upload.fileUploadAction(event)}"/><br/> Arquivo selecionado: <h:outputTextid="idarquivo"value="#{fileUploadController.nomeArquivoSelecionado}"/></h:form></h:body></html>
J
jaissonduarte
ei Luciano_Lopes
resolveu mesmo
mostra ai como tu resolveu
L
Luciano_Lopes
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?
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...
L
Luciano_Lopes
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