2010-08-15 8 views

Respuesta

44

No puede: Es una función de seguridad en todos los navegadores modernos.

Para IE8, es desactivada por defecto, pero se puede reactivar el uso de una configuración de seguridad:

Cuando se selecciona un archivo utilizando el tipo de entrada = objeto de archivo, el valor de la propiedad del valor depende de la valor de la configuración de seguridad "Incluir ruta de directorio local al cargar archivos en 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.

En todos los otros navegadores convencionales actuales que conozco, también está apagado. El nombre del archivo es lo mejor que puedes obtener.

Información más detallada y buenos enlaces en this question. Se refiere a obtener el valor del lado del servidor, pero el problema es el mismo en JavaScript antes del envío del formulario.

+5

No puedo obtener la ruta al archivo usando el navegador? ¡¡Esto es una locura!! – gruszczy

+5

@grusz Bueno, depende de su punto de vista: no es el negocio del sitio web de donde proviene realmente el archivo cargado. Es doloroso cuando quieres almacenar la ubicación del archivo original como un servicio para el usuario, lo sé ... Los componentes de carga basados ​​en Flash como uploadify o swfupload.org * pueden * tener más libertades aquí. –

+0

¿Esto significa que no puedo copiar el valor de una entrada de archivo a otra, porque nunca tengo la ruta completa? – gruszczy

-17

como se indicó anteriormente esto es generalmente un problema de permiso. intente y mueva el archivo a un área diferente y otórguele permisos completos.

var path = $ ('# file'). Attr ("value");

+1

mover el archivo a un área diferente y otorgándole diferentes permisos no le dará la ruta completa del archivo. los permisos de archivos locales tienen muy poco o nada que ver con cómo los navegadores manejan los archivos –

13

Bueno, no es posible obtener la ruta completa, pero podemos tener una ruta temporal.

intenta esto:

Te dará una ruta temporal no la ruta exacta, se puede utilizar esta secuencia de comandos si desea mostrar las imágenes seleccionadas como en este ejemplo jsFiddle (Inténtelo por selectng 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 estábamos buscando, pero puede ser que le puede ayudar en alguna parte.

+1

Esto fue extremadamente útil. Exactamente lo que estaba buscando. Gracias. – JeffA

+0

Eso es exactamente lo que quiero. ¡¡Muchas gracias!! –

+0

He perdido la mayor parte de mi tiempo por este guión útil :) Gracias, Hno. – w3debugger

Cuestiones relacionadas