¿Cómo obtener la ruta completa del archivo seleccionado al cambiar <input type='file'> usando javascript, jquery-ajax?
Cómo obtener la ruta completa del archivo al seleccionar el archivo usando<input type=‘file’>
<input type="file" id="fileUpload">
<script type="text/javascript">
function getFilePath(){
$('input[type=file]').change(function () {
var filePath=$('#fileUpload').val();
});
}
</script>
pero la var filePath contiene only name
el archivo seleccionado, no el full path
.
Lo busqué en la red, pero parece que por razones de seguridad los navegadores (FF, Chrome) solo dan el nombre del archivo.
¿Existe alguna otra forma de obtener la ruta completa del archivo seleccionado?
Por razones de seguridad, los navegadores no permiten esto, es decir, JavaScript en el navegador no tiene acceso al sistema de archivos; sin embargo, al utilizar la API de archivos HTML5, solo Firefox proporciona una mozFullPath
propiedad, pero si intenta obtener el valor, devuelve una cadena vacía:
$('input[type=file]').change(function () {
console.log(this.files[0].mozFullPath);
});
https://jsfiddle.net/SCK5A/
Así que no pierdas el tiempo.
editar: si necesita la ruta del archivo para leer un archivo, puede usar la API FileReader en su lugar. Aquí hay una pregunta relacionada sobre SO: Obtenga una vista previa de una imagen antes de cargarla.
Prueba esto:
Le dará una ruta temporal, no la ruta exacta. Puede usar este script si desea mostrar imágenes seleccionadas como en este ejemplo de jsfiddle (pruébelo seleccionando imágenes y otros archivos): -
JSFIDDLE
Aquí está el código: -
HTML: -
<input type="file" id="i_file" value="">
<input type="button" id="i_submit" value="Submit">
<br>
<img src="" width="200" style="display:none;" />
<br>
<div id="disp_tmp_path"></div>
JS: -
$('#i_file').change( function(event) {
var tmppath = URL.createObjectURL(event.target.files[0]);
$("img").fadeIn("fast").attr('src',URL.createObjectURL(event.target.files[0]));
$("#disp_tmp_path").html("Temporary Path(Copy it and try pasting it in browser address bar) --> <strong>["+tmppath+"]</strong>");
});
No es exactamente lo que estabas buscando, pero puede que te pueda ayudar en alguna parte.
No puede hacerlo; el navegador no lo permitirá por motivos de seguridad.
Cuando se selecciona un archivo utilizando el objeto de tipo de entrada = archivo, el valor de la propiedad de valor depende del valor de la configuración de seguridad "Incluir ruta del directorio local al cargar archivos a un servidor" para la zona de seguridad utilizada para mostrar la página web. que contiene el objeto de entrada.
El nombre de archivo completo del archivo seleccionado se devuelve solo cuando esta configuración está habilitada. Cuando la configuración está deshabilitada, Internet Explorer 8 reemplaza la unidad local y la ruta del directorio con la cadena C:\fakepath\ para evitar la divulgación de información inapropiada.
Y otra
Te perdiste );
esto al final de la función de cambio de evento.
Además, no cree una función para el evento de cambio, simplemente úsela como se muestra a continuación:
<script type="text/javascript">
$(function()
{
$('#fileUpload').on('change',function ()
{
var filePath = $(this).val();
console.log(filePath);
});
});
</script>
No puedes. La seguridad le impide saber algo sobre el sistema de archivos de la computadora cliente; ¡puede que ni siquiera tenga uno! Podría ser una MAC, una PC, una tableta o un refrigerador con acceso a Internet: no lo sabes, no puedes saberlo y no lo sabrás. Y permitirle tener la ruta completa podría brindarle información sobre el cliente, especialmente si se trata de una unidad de red, por ejemplo.
De hecho, puedes conseguirlo en determinadas condiciones, pero requiere un control ActiveX y no funcionará en el 99,99% de las circunstancias.
De todos modos, no puede usarlo para restaurar el archivo a la ubicación original (ya que no tiene absolutamente ningún control sobre dónde se almacenan las descargas, o incluso si se almacenan), por lo que en la práctica no le resulta de mucha utilidad de todos modos.