Cómo obtener la ruta completa del archivo seleccionado en el cambio de uso de 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 el var de ruta de archivo contiene only name del archivo seleccionado, no el full path.
Lo busqué en la red,pero parece que por razones de seguridad navegadores (FF, chrome) acaba de dar el nombre del archivo.
¿Hay alguna otra forma de obtener la ruta completa del archivo seleccionado?

Author: Yogesh Pingle, 2013-03-04

9 answers

Por razones de seguridad, los navegadores no permiten esto, es decir, JavaScript en el navegador no tiene acceso al Sistema de Archivos, sin embargo, utilizando la API de archivos HTML5, solo Firefox proporciona una propiedad mozFullPath, pero si intenta obtener el valor, devuelve una cadena vacía:

$('input[type=file]').change(function () {
    console.log(this.files[0].mozFullPath);
});

Http://jsfiddle.net/SCK5A /

Así que no pierdas tu tiempo.

Editar: Si necesita la ruta del archivo para leer un archivo, puede usar la API FileReader en su lugar. Aquí está una pregunta relacionada en TAN: Previsualiza una imagen antes de subirla.

 107
Author: undefined,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-15 18:48:09

Prueba Esto:

Te dará una ruta temporal no la ruta precisa, puedes usar este script si quieres mostrar imágenes seleccionadas como en este ejemplo de jsfiddle (Pruébalo seleccionando imágenes así como 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 ser que pueda ayudarte en algún lugar.

 87
Author: DWX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-12 17:00:23

No puede hacerlo - el navegador no lo permitirá debido a problemas de seguridad.

Cuando se selecciona un archivo utilizando el objeto input type=file, el valor de la propiedad valor depende del valor de la " Incluir local ruta del directorio al subir archivos a un servidor " configuración de seguridad para la zona de seguridad utilizada para mostrar la página web que contiene la entrada objeto.

Solo se devuelve el nombre de archivo completo del archivo seleccionado cuando esta configuración está activado. Cuando la configuración está desactivada, Internet Explorer 8 reemplaza la unidad local y la ruta del directorio con la cadena C:\fakepath\ con el fin de evitar la divulgación de información inapropiada.

Y otros

Te perdiste ); esto al final de la función change event.

Tampoco cree la función para el evento de cambio en su lugar solo úselo como se muestra a continuación,

<script type="text/javascript">

    $(function()
    {
        $('#fileUpload').on('change',function ()
        {
            var filePath = $(this).val();
            console.log(filePath);
        });
    });

</script>
 18
Author: Dipesh Parmar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-04 12:05:10

No puedes. La seguridad lo detiene por saber algo sobre el sistema de archivo de la computadora cliente - ¡puede que ni siquiera tenga uno! Podría ser una MAC, una PC, una tableta o una nevera con conexión a Internet: no lo sabes, no puedes saberlo y no lo sabrás. Y dejar que tenga la ruta completa podría darle alguna información sobre el cliente, especialmente si se trata de una unidad de red, por ejemplo.

De hecho, puede obtenerlo bajo condiciones particulares, pero requiere un control ActiveX, y no funcionará en 99.99% de las circunstancias.

No puede usarlo para restaurar el archivo a la ubicación original de todos modos (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 es mucho uso para usted de todos modos.

 12
Author: Rajshekar Reddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-22 05:47:41

¿Se refería a esto?

$('#i_file').change( function(event) {
var tmppath = URL.createObjectURL(event.target.files[0]);
    $("img").fadeIn("fast").attr('src',tmppath);       
});
 10
Author: Aytac Gul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-23 20:01:45

Puede usar el siguiente código para obtener una URL local de trabajo para el archivo cargado:

<script type="text/javascript">    
    var path = (window.URL || window.webkitURL).createObjectURL(file);
    console.log('path', path);
</script>
 5
Author: Steffen Brem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-30 14:26:41

Nunca deberías hacerlo....y creo que intentarlo en los últimos navegadores es inútil (por lo que sé) .. todos los navegadores más recientes, por otro lado, no permitirán esto....

Algunos otros enlaces que puede ir a través, para encontrar una solución como obtener el valor serverside, pero no en clientside(javascript)

Ruta completa de entrada de archivos usando jQuery
Cómo obtener la ruta del archivo desde el formulario de entrada HTML en Firefox 3

 1
Author: bipen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:21

Puede, si cargar una carpeta completa es una opción para usted

<input type="file" webkitdirectory directory multiple/>

El evento de cambio contendrá:

.target.files[...].webkitRelativePath: "FOLDER/FILE.ext"
 1
Author: Blauhirn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-04 09:31:36

El elemento de archivo tiene y llama a la matriz files contiene todas las cosas necesarias que necesita

var file = document.getElementById("upload");

file.addEventListener("change", function() {
    for (var i = 0; i < file.files.length; i++) {
        console.log(file.files[i].name);
    }
}, false);
 0
Author: Jeeva Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-13 07:56:23