Recientemente, encontré algunos problemas para obtener la ruta del archivo porque necesitaba cargar archivos en Oracle Blob. Debido a razones de seguridad, el nuevo navegador no admite la obtención directa de URL locales. He encontrado algunos métodos en línea, como sigue:
<script type = "text/javaScript"> // fx get de la función de ruta de archivo Función ReadFileFireFox (filebrowser) {try {netscape.security.privilegemanager.enableprivilege ("universalxpconnect"); } catch (e) {alerta ('no se puede acceder al archivo local debido a la configuración de seguridad del navegador. Para superar esto, siga los siguientes pasos: (1) Ingrese "Acerca de: config" en la barra de direcciones; (2) Haga clic derecho y seleccione Nuevo-> Boolean; (3) Ingrese "firmado.CodeBase_Principal_Support" (excluyendo) como el nombre de un nuevo preferencia (4) (4) (4). Recargar el archivo '); devolver; } var filename = fileBrowser.Value; // Este paso puede obtener la ruta completa del cliente. Si el juicio a continuación es demasiado complicado y el juicio a continuación también es muy complicado. var file = components.classes ["@mozilla.org/file/local;1"] .createInstance (componentes.interfaces.nsilocalfile); Pruebe {// Suponga las cortes para el archivo Windows.initWithPath (filename.replace (//// g, "////")); } catch (e) {if (E.Result! = Components.Results.ns_error_file_unrecogned_path) Throw E; alerta ("archivo" + nombre de archivo + "'no se puede cargar: no están permitidas las rutas relativas. Proporcione una ruta absoluta a este archivo."); devolver; } if (file.exists () == false) {alert ("file '" + nombre de archivo + "' no encontrado."); devolver; } return File.path;} // Get Path de acuerdo con diferentes navegadores Función getVl (obj) {// Juez Browser var sys = {}; var ua = navigator.useragent.tolowercase (); var s; (S = UA.Match (/msie ([/d.font>+)//))? Sys.ie = s [1]: (s = ua.match (/firefox // ([/d.]+)/))? Sys.firefox = s [1]: (s = ua.match (/chrome // ([/d.]+)/))? Sys.chrome = s [1]: (s = ua.match (/ópera. ([/D.]+)/))? Sys.opora = s [1]: (s = ua.match (/versión // ([/d.]+).*Safari/))? Sys.safari = s [1]: 0; var file_url = ""; if (sys.ie <= "6.0") {//ie5.5,ie6.0 file_url = obj.value; } else if (sys.ie> = "7.0") {// ie7, ie8 obj.select (); file_url = document.selection.createrange (). Text; } else if (sys.firefox) {// fx // file_url = document.getElementById ("file"). archivos [0] .getAsDataurl (); // La ruta obtenida es la cadena cifrada reconocida por FF file_url = readFileFireFox (obj); } else if (sys.chrome) {file_url = obj.value; } // alerta (file_url); document.getElementById ("text"). innerhtml = "Obtenga la ruta completa del dominio del archivo como:"+file_url;} </script> <h1> JS Método para obtener la ruta completa del dominio del archivo, compatible con navegadores diferentes </h1> <Div Id = "Text" Style = "Color:#F00;"> </div> <put Type = "File" Id "Id" Id "Id" Id "" "Id" onchange = "getVl (this)" />El código anterior se usa normalmente en IE 6 7 8. En IE9, document.selection.createrange () niega el acceso, lo que parece mejorarse.
Finalmente, la prueba encontró que en IE9, si el control de archivos obtiene foco, document.selection.createrange () niega el acceso.
Por lo tanto, solo necesita agregar una oración obj.blur () después de obj.select ().
EX:
else if (sys.ie> = "7.0") {// ie7, ie8 obj.select (); obj.blur (); file_url = document.selection.createrange (). Text; } // obj = document.getElementById ("archivo");El método anterior (recomendado) para obtener la ruta absoluta del archivo de entrada en JS es todo el contenido compartido por el editor. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.