<input type="file" id="file-id" name="file_name" onchange="theimage();">
Este es mi botón de carga.
<input type="text" name="file_path" id="file-path">
Este es el campo de texto donde tengo que mostrar la ruta completa del archivo.
function theimage(){
var filename = document.getElementById('file-id').value;
document.getElementById('file-path').value = filename;
alert(filename);
}
Este es el JavaScript que resuelve mi problema. Pero en el valor de alerta me da
C:\fakepath\test.csv
y Mozilla me da:
test.csv
Pero quiero la ruta local del archivo totalmente calificado . Cómo resolver este problema?
Si esto se debe a un problema de seguridad del navegador, ¿cuál debería ser la forma alternativa de hacerlo?
javascript
html
dom
file-upload
e_maxm
fuente
fuente
browser security issue
~ si está implementado en el navegador (con razón), es muy poco probable que pueda evitarloC:\fakepath
, así que ahora todos conocen mi estructura de directorios.Respuestas:
Algunos navegadores tienen una función de seguridad que evita que JavaScript conozca la ruta completa local de su archivo. Tiene sentido: como cliente, no desea que el servidor conozca el sistema de archivos de su máquina local. Sería bueno si todos los navegadores hicieran esto.
fuente
c:\users\myname\desktop
o/Users/myname/Desktop/
, o lo que sea). Eso no es algo que un servidor web tenga que conocer.Utilizar
en vez de
fuente
¡Utilizo el objeto FileReader en el
onchange
evento de entrada para su tipo de archivo de entrada! Este ejemplo utiliza la función readAsDataURL y, por esa razón, debe tener una etiqueta. El objeto FileReader también tiene readAsBinaryString para obtener los datos binarios, que luego se pueden usar para crear el mismo archivo en su servidorEjemplo:
fuente
Si va a Internet Explorer, Herramientas, Opciones de Internet, Seguridad, Personalizado, busque "Incluir ruta de directorio local al cargar archivos en un servidor" (está bastante abajo) y haga clic en "Activar". Esto funcionará
fuente
Estoy feliz de que los navegadores se preocupen por salvarnos de secuencias de comandos intrusivas y similares. ¡No estoy contento con que IE ponga algo en el navegador que hace que una solución de estilo simple parezca un ataque de pirateo!
He usado un <span> para representar la entrada del archivo para poder aplicar el estilo apropiado a la <div> en lugar de la <input> (una vez más, debido a IE). Ahora, debido a esto, IE quiere mostrarle al Usuario una ruta con un valor que garantice que los pondrá en guardia y, al menos, temerosos (¡¿si no los asusta por completo?!) ... ¡MÁS IE-CRAP!
De todos modos, gracias a quienes publicaron la explicación aquí: Seguridad del navegador IE: agregando "fakepath" a la ruta del archivo en la entrada [type = "file"] , he reunido un reparador menor superior ...
El siguiente código hace dos cosas: corrige un error lte IE8 donde el evento onChange no se activa hasta que el campo de carga onBlur y actualiza un elemento con una ruta de archivo limpia que no asustará al Usuario.
fuente
Encontré el mismo problema. En IE8, podría solucionarse creando una entrada oculta después del control de entrada del archivo. El llene esto con el valor de su hermano anterior. En IE9 esto también se ha solucionado.
Mi razón para querer conocer la ruta completa fue crear una vista previa de la imagen de JavaScript antes de cargarla. Ahora tengo que cargar el archivo para crear una vista previa de la imagen seleccionada.
fuente
Si realmente necesita enviar la ruta completa del archivo subido, entonces probablemente tenga que usar algo como un applet de Java firmado ya que no hay ninguna forma de obtener esta información si el navegador no la envía.
fuente
parece que no puedes encontrar la ruta completa en tu localhost por js, pero puedes ocultar la ruta falsa para mostrar el nombre del archivo. Use jQuery para obtener el nombre de archivo seleccionado de la entrada del archivo sin la ruta
fuente
Usar lectores de archivos:
fuente
Ahí, en mi caso, estoy usando el entorno de desarrollo asp.net, así que quería cargar esos datos en una solicitud asíncrona ajax, en [webMethod] no puede atrapar el cargador de archivos ya que no es un elemento estático, así que tuve que realice una rotación para dicha solución arreglando la ruta, que convierta la imagen deseada en bytes para guardarla en DB.
Aquí está mi función de JavaScript, espero que te ayude:
aquí solo para probar:
fuente
Complementando el uso de la respuesta de Sardesh Sharma:
Por camino completo.
fuente
undefined
a mí en FireFox 75.0. ¿Existepath
realmente? ¿Tiene alguna referencia a la documentación al respecto?