escrevi um programa para enviar uploads utlizando o commons-fileupload.
O problema é que ao fazer upload com Internet Explorer o nome do arquivo fica junto com o caminho, por exemplo:
ao fazer upload do arquivo figura.jpg , o arquivo é enviado como
Eu entendi o que acontece, mas nao entendi pq isso eh um problema… voce nao deveria usar o nome do arquivo que o browser manda pra nada alem de “curiosidade”, e usar um nome gerado pelo proprio servidor para guarda-lo…
Aganiuipuque
Ola cv!
Cara… não entendi sua colocação…
eu quero apenas o nome do arquivo e não o caminho completo, entendeu?
O sistema está gravando o nome do arquivo junto com o caminho…
sacou?
cv1
Sim, pq o nome que o browser manda eh soh uma indicacao. Se voce quiser pegar so o nome do arquivo, quebre a String em / e , e pegue o ultimo pedaco.
Voce nao deve, no entanto, armazenar um arquivo no servidor com esse nome, pq isso abre um buraco de seguranca beeeeeeeeem grande.
fzampa
cv:
Voce nao deve, no entanto, armazenar um arquivo no servidor com esse nome, pq isso abre um buraco de seguranca beeeeeeeeem grande.
Como assim?
cv1
Voce esta armazenando uma string enviada no cliente como um nome de arquivo. Se o cara souber passar um nome de arquivo malandro, ele pode, teoricamente, sobrescrever um arquivo da sua aplicacao, ou do sistema operacional.
Aganiuipuque
Entao gelera!
Consegui resolver o problema utilzando substring, mas existe um problema de incompatibilidade de navegadores.
No IE eu consigo faze-lo utilizando substring, porém no Firefox, Opera, Netscape (que é mesma coisa do firefox), eu preciso “arrancar” o substring.
no exemplo no jakarta, na linha arquivo.getNome() funciona nos demais.
somente no IE esta sendo necessario o uso do substring…
Que merda de navegador!!!
Alguém tem alguma solucao inteligente pra isto???
Ou terei mesmo que identificar qual é o navegador??
cv1
Gere um nome aleatorio pro arquivo, ueh
Aganiuipuque
Boa cv!!
Mas acho que não vai rolar assim…
A galera quer ver depois pelo navegador e nao vai saber qual é o nome da foto…
Mas gostei da alternativa!!!
:lol:
Alguém sugere algo melhor???
cv1
Da a URL da foto de volta pro cara ue
Veja como o flickr faz isso
Aganiuipuque
Blz… as ideias são boas!
Mas o meu problema é o seguinte:
No MOzilla/firefox funciona perfeitamente, porém no IE gera uma exception
Não teria como fazer isto funcionar em ambos???
Tem como identificar qual é o navegador o usuário? Se tiver eu posso estipular um condicão…Mas não vale JavaScript!!
Se for IE eu uso substring para pegar somente o nome do arquivo, se for Mozilla apenas usarei o arquivo.getName();
Ninguém aqui tentou usar o exemplo de upload do Jakarta commons em ambos os navegadores?? DÁ PAU!! só funciona no Mozilla!!
Veja a o erro que é mostrado no IE:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
Seu buraco eh um pouco mais embaixo (hehe): voce esta passando null de bobeira em algum lugar. Cheque de novo o seu codigo pra ter certeza de que vc esta passando um nome de arquivo valido.
E
escruz
Ao invés de utilizar subString utilize File.separator, como no exemplo:
agora que eu não estou passando nada null isto eu garanto!!!
NAO ESTOU PASSANDO NADA NULL…
Ja depurei todo o codigo…
Aganiuipuque
Bem… voltando ao assunto…
Me disseram que eu estava passando valor NULL e realmente nao estou passando. O que ocorre é que por algum motivo, o IE não esta considerando o arquivo quando é passado da seguinte forma:
c:\meusdomentos\fotos.jpg
Assim ele nao reconhece e o java me retorna NULL POINTER
Já se eu passar o nome do arquio somente, ele processa, porém nao faz o upload.
ALGUÉM AQUI UTILIZOU O EXEMPLO DO JAKARTA COMMONS UPLOAD??? :roll:
Como fizeram para funcionar em ambos os navegadores?? (IE e MOZILLA) :?:
Estou aguardando alguma alma generosa me dizer como se faz isto…
estou ficando frustrado… :shock:
Aganiuipuque
Então galera,
Vou contribuir com a comunidade já que ninguém conseguiu me dar a solução, blz?
Agora está funcionado em ambos os navegadores e eu nem precisei utilizar substring!!!
Taí um trecho do meu codigo :
//Cria-seumanovainstanciadearquivo.//Onomeéoitem.getName()Filenome=newFile(item.getName());out.println("nome do arquivo:"+nome+"<br>");/*Aquieucrieiumainstanciasóprapegarodiretorioondeserá*/armazenadaafiguraFiledir=newFile(pasta);/*Agorabastagravaroarquivopassandocomoparametroapastaetambémonomedoarquivo.percebaqueeupequeioobjetoNOMEeutilizeinovamenteo*/metodoget.Nome();item.write(newFile(pasta,nome.getName()));//out.println("salvo em: "+pasta+nome.getName());Fácilné????"... Não há nada que supere a perseverança..."
Agradeço aqueles que tentaram me ajudar…
Aganiuipuque
Valeu galera!!
Já encontrei a solução.
Agora funciona perfeitamente em ambos os navegadores!!
heheheheh!!!
iSoron
Eu também sou a favor dos nomes “aleatórios”.
Nome de arquivo deve ser manuseado pelo servidor. O usuário deve ver a descriçao da foto, ou a data, no máximo.
Pra eliminar as sombras de duvidas, faz um thumbnail também.
Depender do browser pra saber o nome do arquivo não me parece uma boa ideia.
Mas você quem sabe…