<input type="file" id="file-id" name="file_name" onchange="theimage();">
Este é o meu botão de upload.
<input type="text" name="file_path" id="file-path">
Este é o campo de texto onde eu tenho que mostrar o caminho completo do arquivo.
function theimage(){
var filename = document.getElementById('file-id').value;
document.getElementById('file-path').value = filename;
alert(filename);
}
Este é o JavaScript que resolve o meu problema. Mas no valor de alerta me dá
C:\fakepath\test.csv
e Mozilla me dá:
test.csv
Mas eu quero o caminho completo do arquivo local . Como resolver esse problema?
Se isso ocorrer devido a um problema de segurança do navegador, qual deve ser a maneira alternativa de fazer isso?
javascript
html
dom
file-upload
e_maxm
fonte
fonte
browser security issue
~ Se o seu implementadas no navegador (com razão), então é altamente improvável que você pode contorná-laC:\fakepath
, então agora todo mundo conhece minha estrutura de diretórios.Respostas:
Alguns navegadores têm um recurso de segurança que impede o JavaScript de conhecer o caminho completo local do seu arquivo. Faz sentido - como cliente, você não deseja que o servidor conheça o sistema de arquivos da sua máquina local. Seria bom se todos os navegadores fizessem isso.
fonte
c:\users\myname\desktop
ou/Users/myname/Desktop/
ou qualquer outro). Isso não é algo que um servidor web tenha conhecimento comercial.Usar
ao invés de
fonte
Eu uso o objeto FileReader no
onchange
evento de entrada para o seu tipo de arquivo de entrada! Este exemplo usa a função readAsDataURL e, por esse motivo, você deve ter uma tag. O objeto FileReader também possui readAsBinaryString para obter os dados binários, que podem ser usados posteriormente para criar o mesmo arquivo no servidorExemplo:
fonte
Se você acessa o Internet Explorer, Ferramentas, Opção da Internet, Segurança, Personalizado, encontre o "Incluir caminho do diretório local ao fazer upload de arquivos para um servidor" (é bastante simples) e clique em "Ativar". Isso vai funcionar
fonte
Estou feliz que os navegadores tenham o cuidado de nos salvar de scripts intrusivos e similares. Não estou feliz com o IE colocando algo no navegador que faz uma simples correção de estilo parecer um ataque de hacker!
Usei um <span> para representar a entrada do arquivo, para que eu pudesse aplicar o estilo apropriado ao <div> em vez do <input> (mais uma vez, por causa do IE). Agora, devido a isso, o IE quer mostrar ao usuário um caminho com um valor garantido para colocá-lo em guarda e no mínimo apreensivo (se não totalmente assustá-lo?!) ... MAIS IE-CRAP!
De qualquer forma, graças a quem postou a explicação aqui: IE Browser Security: anexando "fakepath" ao caminho do arquivo na entrada [type = "file"] , reuni um pequeno fixador-superior ...
O código abaixo faz duas coisas - ele corrige um bug do lte IE8 em que o evento onChange não é acionado até o campo OnBlur do upload e atualiza um elemento com um caminho de arquivo limpo que não assusta o usuário.
fonte
Eu vim através do mesmo problema. No IE8, isso poderia ser contornado, criando uma entrada oculta após o controle de entrada do arquivo. Preencha com o valor do irmão anterior. No IE9, isso também foi corrigido.
Minha razão para querer conhecer o caminho completo foi criar uma visualização da imagem em javascript antes do upload. Agora tenho que carregar o arquivo para criar uma visualização da imagem selecionada.
fonte
Se você realmente precisar enviar o caminho completo do arquivo codificado, provavelmente precisará usar algo como um applet java assinado, pois não há como obter essas informações se o navegador não as enviar.
fonte
Parece que você não consegue encontrar o caminho completo em seu host local por js, mas pode ocultar o caminho falso para mostrar apenas o nome do arquivo. Use jQuery para obter o nome de arquivo selecionado da entrada do arquivo sem o caminho
fonte
Use leitores de arquivos:
fonte
Olá, no meu caso, eu estou usando o ambiente de desenvolvimento asp.net, então eu queria fazer o upload desses dados na solicitação assíncrona ajax, em [webMethod] você não pode capturar o carregador de arquivos, pois não é um elemento estático, então tive que faça uma rotatividade para essa solução, corrigindo o caminho, depois converta a imagem desejada em bytes para salvá-la no banco de dados.
Aqui está a minha função javascript, espero que ajude você:
aqui apenas para teste:
fonte
Complementando a resposta de Sardesh Sharma, use:
Para o caminho completo.
fonte
undefined
para mim no FireFox 75.0. Existepath
realmente? Você tem alguma referência à documentação sobre isso?