Fileupload Primefaces
Pessoal,
Estou tentando fazer a transferência de um arquivo usando o FileUpload do Primefaces e estou tendo problemas pra gravar o arquivo no servidor.
É que o valor de retorno do método event.getFile().getFileName() é por exemplo "C:\Temp\arquivo.txt". Bom, nesse caso eu teria que ter essa estrutura no servidor e na verdade eu quero gravar na pasta "c:\upload" gravada em um String privado da classe que contém o método abaixo.
Porém, se quando eu crio o File se eu usar "new File(stringDiretorio + event.getFile().getFileName())" o resultado será
"c:\upload\c:\Temp\arquivo.txt" e erro é claro...
Aguem pode me orientar na melhor forma de resolver isso????
public void upload(FileUploadEvent event) {
FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, msg);
File file = new File(event.getFile().getFileName());
try {
int i = 0;
InputStream is = event.getFile().getInputstream();
FileOutputStream fos = new FileOutputStream(file);
while ( (i = is.read()) != -1 ) {
fos.write(i);
}
fos.close();
} catch (FileNotFoundException e) {
Logger.getLogger(FileUploadController.class.getName()).log(Level.SEVERE, null, e);
} catch (IOException e) {
Logger.getLogger(FileUploadController.class.getName()).log(Level.SEVERE, null, e);
}
}
Estou tentando fazer a transferência de um arquivo usando o FileUpload do Primefaces e estou tendo problemas pra gravar o arquivo no servidor.
É que o valor de retorno do método event.getFile().getFileName() é por exemplo "C:\Temp\arquivo.txt". Bom, nesse caso eu teria que ter essa estrutura no servidor e na verdade eu quero gravar na pasta "c:\upload" gravada em um String privado da classe que contém o método abaixo.
Porém, se quando eu crio o File se eu usar "new File(stringDiretorio + event.getFile().getFileName())" o resultado será
"c:\upload\c:\Temp\arquivo.txt" e erro é claro...
Aguem pode me orientar na melhor forma de resolver isso????
public void upload(FileUploadEvent event) {
FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, msg);
File file = new File(event.getFile().getFileName());
try {
int i = 0;
InputStream is = event.getFile().getInputstream();
FileOutputStream fos = new FileOutputStream(file);
while ( (i = is.read()) != -1 ) {
fos.write(i);
}
fos.close();
} catch (FileNotFoundException e) {
Logger.getLogger(FileUploadController.class.getName()).log(Level.SEVERE, null, e);
} catch (IOException e) {
Logger.getLogger(FileUploadController.class.getName()).log(Level.SEVERE, null, e);
}
}
Ricardo Pestana
Curtidas 0
Respostas
Davi Costa
26/09/2012
Aqui uso assim e funciona normalmente:
String name = LINUX_REFERENCE + event.getFile().getFileName();
Funciona tranquilo(esse é a pasta do servidor)
att Davi
String name = LINUX_REFERENCE + event.getFile().getFileName();
Funciona tranquilo(esse é a pasta do servidor)
att Davi
GOSTEI 0
Ricardo Pestana
26/09/2012
Então Davi é praticamente o que eu tô fazendo, mas o event.getFile().getFileName() retorno o caminho completo (com o diretório antes do nome do arquivo) aí qdo eu concateno fica inválido... pode ser alguma confiração errada sei lá???
Advertência: PWC4011: Unable to set request character encoding to UTF-8 from context /CIE, because request parameters have already been read, or ServletRequest.getReader() has already been called
Grave: java.io.FileNotFoundException: c:\upload\C:\Temp\titus.txt (A sintaxe do nome do arquivo, do nome do diretório ou do rótulo do volume está incorreta)
Advertência: PWC4011: Unable to set request character encoding to UTF-8 from context /CIE, because request parameters have already been read, or ServletRequest.getReader() has already been called
Grave: java.io.FileNotFoundException: c:\upload\C:\Temp\titus.txt (A sintaxe do nome do arquivo, do nome do diretório ou do rótulo do volume está incorreta)
GOSTEI 0