full path en el input file de un formulario en Firefox 3
La salida de Firefox 3 ha sido motivo de alegría para muchos…En mi caso particular así lo fue, hasta que me topé con que una de las aplicaciones que utilizo, el cual utiliza un file input para tomar la ruta física en el disco duro de un archivo. Verificando con ayuda de firebug, me topo con que Firefox 3 ya no toma la ruta completa del archivo, a pesar de que se vea en pantalla…. únicamente toma el nombre del archivo, cosa que, como el sistema con el que tuve el problema tomaba por medio de javascript la ruta, dejó de funcionar esa parte. Buscando y buscando durante 2 largos días, por fin logré dar con la solución número uno. Sólo que no me funcionó ya en el server, debido a que por alguna razón no funciona con SSL. Un segundo inconveniente, es un warning que le manda al usuario advirtiendole que se ejecutará algo raro. La solución 1:
- Consiste en escribir al inicio de la declaración javascript o antes de que se quiera leer el valor por DOM del fileInput la siguiente línea: netscape.security.PrivilegeManager.enablePrivilege(”UniversalFileRead”);
El ejemplo de la solución 1 aquí.
La solución 2, fue más por un momento de desesperación para resolver dicha problemática. Consiste en la creación de un applet, que utiliza un fileDialog, para tomar la ruta del archivo. Una vez seleccionada la ruta por medio de un botón, se muestra la misma en un label de java. Por otra parte, se pone fuera de la declaración del applet, en el archivo html, un botón, o lo que sea que vaya a lanzar el evento de lo que queremos hacer con la ruta, que se comunica con java y manda a llamar un método del applet, que no hace otra cosa mas que devolver el valor resultante de llamar el método .getText() del label donde ya se encuentra la ruta. De paso, se puede filtrar archivos sólo de ciertas extensiones, por ejemplo se se desea aceptar sólo imagenes, y ya no tener que validar eso del lado del servidor, como con PHP. La desventaja: así como hice el applet, sólo funciona en windows.
El ejemplo de la solución 2 aquí.
El archivo .jar se puede tomar de aquí, y el código lo actualizaré el lunes porque no lo tengo a la mano…
Espero sea de utilidad para alguien….para mí lo será muchísimo….hasta que alguien me diga como diablos tomar el full path de un fileInput de manera nativa por DOM con javascript en Firefox 3.