Recuperar caminho completo de arquivo

Olá,
Agora estou com outro problema, preciso de alguma forma de recuperar o caminho de um arquivo a partir de uma página da web. Primeiramente eu tentei utilizar um input html com type=“file”, mas isto recupera apenas o nome e extensão do arquivo, não o caminho completo, além de preparar o arquivo para upload na página. O que eu preciso é apenas o caminho do arquivo para ser armazenado. Importante ressaltar que esse caminho deve corresponder a um arquivo que está no cliente, e não no servidor.

Só para poder responder para você de forma correta

  • Qual a estrutura que você tá usando?
  • Você quer recuperar o caminho inteiro do arquivo do lado do cliente é isso?

Agora eu estou utilizando um button e um input do tipo texto. A ideia é que o botão abra uma janela de navegação de arquivos e depois que o arquivo for selecionado, o input seja preenchido com o caminho completo para este arquivo. E, sim, eu preciso recuperar o caminho do lado do cliente, mas apenas o caminho, sem fazer o upload do arquivo.

O problema é que depois de fazer o submit, só o nome do arquivo permanece na variável do form. Uma forma de contornar isso é copiar o valor do input file em algum campo hidden, aí você pode ler esse hidden com o caminho completo. Nunca fiz isso, mas acredito que possa funcionar. Ah, você precisa copiar o conteúdo e jogar na hidden usando javascript, antes de dar o submit.

Eu vou tentar fazer isto, mas quando o arquivo é selecionado, aparece na página apenas o nome do arquivo com a extensão. Isso quando utilizado o input do tipo file.

Até onde sei é impossível pegar o caminho completo para upload de arquivos, pois o controle do campo file fica a cargo do navegador (por questões de segurança o navegador bloqueia qualquer outra forma de acesso via script e liberando o arquivo para o servidor ao submeter a página). É por isso que javascript consegue pegar apenas o nome do arquivo e sua extensão, pois o caminho completo o navegador esconde do javascript, algo +/- desse tipo.

Um exemplo clássico disso é o fato de validar arquivo (tamanho, extensão, etc) via ajax, não dá.

Ouvi dizer também que esse controle pode ser liberado pra quem usa navegador Firefox (creio que pelo about:config), mas não é uma boa recomendação.

Eu vi isso, acabou que eu tive vários problemas em relação a isso. Mas o meu cliente utiliza o Internet Explorer, e tem uma opção de configuração que permite a exibição do endereço do link. Porém eu ainda tive alguns problemas na hora de submeter o form, pois no framework q eu utilizo os forms são submetidos via javascript. E os navegadores bloqueiam algumas funções javascript que tentem acessar o input tipo file. Mas eu consegui resolver todos estes problemas utilizando um campo de texto normal e um botao e colocando o input file com style=“display:none”. Coloquei o evento onClick do botão para acionar o evento click do input file e o evento onChange do input file pra setar o valor de um campo de texto (txtPath). Com isso eu consegui recuperar o caminho a partir do campo de texto. Funciona no IE, no Chrome não funciona e no FireFox eu não testei.

Para resolver o problema de submeter via javascript, o botão que aciona o evento submit remove a tag do input file antes de submeter. Aí o problema se resolve, pois eu consigo enviar para o servidor o caminho completo do arquivo e salvar no banco de dados. Mas valeu pela ajuda aí. Problema Resolvido.

ps: minha explicação ficou bem + ou - mas o código vai ajudar a entender :lol:

<input id="filUpload"  type="FILE" size="20" value="" style="display:none;color:black;" onchange="txtPath.value = this.value.replace(/\\/gi, '/');">
<input id="txtPath"  type="TEXT" size="40" value="" style="color:black;">
<input type="button" onclick="filUpload.click();" style="width: 25px; heigth: 25px; margin-left: 5px;">

Realmente, já ouvi sobre essas configurações que o IE libera, porém provavelmente em outros navegadores não irá funcionar, porque como sempre (sem julgar a tecnologia), pra fazer as coisas no IE é usando recursos alternativos (vulgo gambiarra, rsrsrs).

Mas parabéns pela solução, eu tive de usar algo parecido para validar imagens (extensão e tamanho) pelo php, tive de mandar para um iframe oculto (pois assim o php já tinha acesso e conseguia validar).

Mas já dizia Elis Regina… Vivendo e aprendendo a jogar… nem sempre ganhando, nem sempre perdendo mas, aprendendo a jogar… abraço e boa sorte.

Otavio… vc podia colocar a funcção que vc fez??

o jsp completo… estou passando pelo mesmo problema… a única solução que encontei foi de fazer o upload para o servidor…e pegar o caminho dele…