Pessoal, estou usando o tipo File para pegar um arquivo na tela, e fazer upload do mesmo… na minha máquina funciona, só que quando mudo de máquina ele da erro de “Não encontra arquivo” ele le na página jsp, pega na servlet e envia o caminho completo…
Queria que enviasse o caminho completo do arquivo e não só o nome… existe alguma função que pega o valor do input e manda o caminho?
O caminho completo do arquivo não pode ser enviado por um por razões de segurança. Além disso, não faz sentido a aplicação Web saber o path completo porque normalmente não deve ter acesso a esse diretório. Por exemplo, digamos que você tenha uma aplicação Web hospedada no Google em Linux querendo saber o path completo de um arquivo que está em um celular rodando Symbian. Faz algum sentido a aplicação saber o path completo ?
E se voce mudar a pasta onde o arquivo se econtra, depois de ter salvo a informacao ? é esse erro que esta acontecendo com voce acredito, acho que voce pode somente pegar o nome do arquivo, e arquivo esse salvo no banco de dados.
Eu sei que não faz sentido e tal… que são questões de segurança…
mas não encontrei outro jeito (simples) de fazer um upload…
rof… é assim… vou “subir” um arquivo excel, ler suas colunas e gravá-las no BD… no IE ta redondo, pq ele não tem essa verificação, mas se for uma versão mais atual do IE, ele le errado…
Tem alguma maneira de pegar esse valor do input e converte-lo em string?
Tava pensando em usar o JChooser, como uma função, ai eu pego a string do nome com getAbsolutePath… vcs podem me ajudar com isso?
Tio, como é que saber o caminho completo do arquivo vai resolver seu problema de upload? Que eu saiba, a máquina que recebe o arquivo não deveria ter acesso nenhum à sua máquina. Se o arquivo está tendo problemas para subir, alguma coisa está errada no seu código de upload.
Se em uma aplicação Web você estiver usando Swing, você está fazendo uma _______ muito errada porque está confundindo os conceitos de aplicação Web e aplicação cliente. Esse é o típico exemplo de “puxa, mas funcionava na minha máquina…”
Amigo, tenho de lhe explicar o seguinte. Quando em uma aplicação Web você tem um campo de entrada (pelo menos é assim que aparece no HTML gerado, use um View Source no seu browser para verificar isso), o browser apresenta um botão que lhe permite escolher o arquivo. Na aplicação web, deve haver uma forma de receber o arquivo que subiu.
Normalmente as pessoas usam uma biblioteca como o Jakarta Apache Commons Upload para fazer seus uploads, mas você precisa ver um exemplo de aplicação que faça isso. Não fique chutando, como é o que você está tentando fazer.
com o Jakarta… só que ele tem limitações, ou melhor, os Browser possuem aquela segurança e não da para selecionar o caminho do arquivo… pois ele recebe no tipo File, uma string com o caminho…
eu não estou tentando chutar… quero só burlar isso… usando o jfilechooser e pegando o caminho do arquivo e passando pelo servlet… .e não jogar direto na classe…
Bom, se você quer burlar alguma coisa, então vá para outro fórum, não este.
Que eu saiba, você pode fazer upload com Flash ( http://code.google.com/p/swfupload/ ), que é o que é usado naqueles web mails que permitem pegar vários arquivos de uma vez só.
Uma forma de você fazer upload e saber o nome completo do arquivo é disponibilizar uma applet Java assinada, mas não recomendaria o seu uso, simplesmente porque isso provavelmente não vai funcionar (por exemplo, no MacOSX o Java está desabilitado no Safari até que a Oracle crie uma atualização que corrija uma falha de segurança que existe no plugin do Java para browsers - applets.).
Outra coisa, amigo: se você está usando qualquer classe de javax.swing.* em uma aplicação Web, está fazendo uma ______ besteira. Eu estou dizendo para você e estou repetindo: se você fosse meu funcionário, iria mandar você de volta para a escola, já que está confundindo conceitos Web e conceitos de aplicação desktop de maneira grotesca.
Agora sim ficou mais claro =D, mas pacato, ca entre nos, acho que c ta confundindo um pouco as nossas cabecas, hehehe, aparentemente voce ta misturando nomemclaturas web com swing. Faz assim, confirma, o que voce quer: “Pegar um arquivo no excel, e atravez da sua aplicacao web, ler esse arquivo, pegar o conteudo desse arquivo e salvar numa tabela especifica ?”
estou misturando agora com swing… sei que é porco isso… mas não to vendo maneira de pegar os caminhos do arquivo… pois o servlet eu pego pelo file.getName, assim passo para a classe abaixo para ler o arquivo…
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]
não vou colocar como resolvido pois quero tentar fazer algo mais limpo que isso… mas como é uma aplicação que será utilizada só aqui na minha area não será anti ético
Teste sua aplicação Web de uma outra máquina - por exemplo, instale-a no seu servidor de teste. Você vai perceber uma coisa muito bizarra - o JFileChooser, se ele aparecer, vai aparecer no servidor, não no seu browser. Você começou a entender por que é que não se usa Swing em aplicações Web?
if(fileItem.getName().contains("\\")){
String caminho2 = fileItem.getName().substring(fileItem.getName().lastIndexOf("\\") + 1);
File uploadedFile = new File("./arquivoUpload/"+caminho2);
fileItem.write(uploadedFile);
caminho = "./arquivoUpload/"+caminho2;
}else{
// SE FOR IE PASSAR O CAMINHO2 QUE VIRA SÓ O NOME DO AQRQUIVO
File uploadedFile = new File("./arquivoUpload/"+fileItem.getName());
fileItem.write(uploadedFile);
caminho = "./arquivoUpload/"+fileItem.getName();
} [/code]