¿Cómo obtener la ruta completa del archivo seleccionado al cambiar <input type='file'> usando javascript, jquery-ajax?

Resuelto Yogesh Pingle asked hace 11 años • 14 respuestas

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 nameel 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?

Yogesh Pingle avatar Mar 04 '13 18:03 Yogesh Pingle
Aceptado

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 mozFullPathpropiedad, 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.

Ram avatar Mar 04 '2013 12:03 Ram

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.

DWX avatar Jul 18 '2014 06:07 DWX

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>
Dipesh Parmar avatar Mar 04 '2013 12:03 Dipesh Parmar

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.

Rajshekar Reddy avatar Nov 22 '2013 05:11 Rajshekar Reddy