entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Capturar ruta local con un input file

Hola desarrolladores!! cómo están?

El día de hoy me encontré con una problemática. He investigado, sin embargo muchos dicen que es imposible por temas de seguridad.

Mi pregunta es entonces: se puede de alguna manera obtener la ruta completa de un input del tipo file??

Es decir, más alla de que se trate de un input file, mi idea es tener una imágen o botón que al clickearlo me permita elegir algún documento de mi disco local.
Una vez que yo haya seleccionado el archivo, poder tomar esa ruta
(por ejemplo: file:///C:/miCarpeta/miDocumento.docx ). Solo quiero esa ruta del archivo seleccionado para guardarlo en mi base.

Alguno conoce una forma de lograrlo? No me interesa subir el archivo. Repito, solo quiero obtener la ruta completa de mi archivo local y guardarlo en mi base de datos.

Atentamente darkCode ;)

1 Respuesta

2votos

carlossevi Puntos63580

Yo estaba casi seguro de que esto es imposible pero sin embargo acabo de hacer la prueba con este script que he visto en esta pregunta de Stackoverflow y en mi consola sí que se refleja la ruta local.

El código en cuestión:

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

Según comentan no debería funcionar por motivos de seguridad, pero... a mi aparentemente me funciona =)

Sin contar con esta solución que tendrás que validar en diferentes navegadores, yo sólo he visto implementaciones de algo similar con Applets de Java.

0voto

darkCode comentado

Geniall!!! =) Muchasss gracias! Aún no lo he probado, antes te pregunto, como es eso de tener que validar en diferentes navegadores?

0voto

carlossevi comentado

Me refiero a que pruebes si te funciona con diferentes navegadores (Chrome, Firefox, Explorer, Safari...) y sus versiones. Supongo que esta funcionalidad tan "extraña" la necesitas para una Intranet o algún entorno controlado con pocos usuarios por lo que lo tendrás más controlado.

0voto

darkCode comentado

Entiendo si!.. muchisimas gracias!! Lo voy a poner en prueba. =)

0voto

darkCode comentado

Lo he probado a esto pero me devuelve una cadena vacia. Como es que te funciona? Seguramente tendrás alguna extensión de Firefox instalada. He leido que con ciertas extensiones se puede lograr ya sea en Firefox como en Ghrome, y hasta en explorer ver la ruta. El problema es que me gustaría que funcione sin extensión alguna.
Quizás aún la solución es bastante limita y hasta casi imposible.

0voto

carlossevi comentado

Es muy curioso porque con la siguiente línea me registra todo en la consola, incluido el mozFullPath con el valor correcto:

console.dir(this.files[0]);

Pero con esta otra la cadena está vacía:

console.dir(this.files[0].mozFullPath);

¿Será que el navegador no deja acceder directamente a esa propiedad?

En cualquier caso me intriga bastante saber para qué necesitarías obtener este dato =)

0voto

Leonardo-Tadei comentado

Buenas,

al igual que Carlos, yo también hubiera jurado que no se tenía acceso a la ruta entera del archivo mediante JavaScript, por motivos de seguridad.

Estuve jugando un poco ayer con FileReader de JavaScript, y no contiene tampoco la ruta completa.

El prefijo "moz" de la propiedad tiene toda la pinta de ser una implementación solo de Firefox, así que otros navegadores pueden no estarla implementando. De todas formas, debe ser una propiedad de solo lectura, porque de otra forma sería un desastre para la seguridad, ya que permitiría fácilemnte el robo de archivos solo por visitar un sitio.

De todas formas @darkCode, qué utilidad tiene guardar la ruta del archivo en la PC local? Si el usuario lo borra, renombra o mueve, este dato pasa a ser bastente inutil... tal vez si nos dijeras el uso que le vas a dar a esto podríamos ver otras soluciones posibles.

Saludos!

0voto

darkCode comentado

Exacto leonardo, yo también pienso que la utilidad es media inútil pero era para una aplicacion que ordenaba los archivos locales de la PC. Como para encontrarlos más facilmente. Pero sigue siendo una limitante el tema de si el usuario lo mueve de lugar o lo borra.

0voto

Leonardo-Tadei comentado

Hola DarkCode,

para hacer una aplicación que ordene los archivos locales, no deberías usar el paredigma web de programación... podrías hacer con PHP una aplicación de escritorio (el intérprete PHP-CLI corre directamente sobre una PC, sin necesidad del servidor web, y además es multiplataforma) con lo que no tenés que aprender un nuevo lenguaje para hacer esto.

Para la interfaz gráfica, que ahora será de escritorio, podrías usar por ejemplo PHP-GTK, que es un bnding con las bibliotecas gáficas GTK que también son multimplataforma.

Saludos!

0voto

darkCode comentado

Muchas gracias amigo! :)

0voto

Guadalupe Frausto comentado

Hola, tengo un problema similar, solo que estoy trabajando con JSP y Servlets, aun así puede funcionar este código..??? De ser así cómo y donde lo implemento..??

Les agradecería una respuesta pronto, me urge.

0voto

Leonardo-Tadei comentado

Hola Guadalupe,

poné tu consulta como una pregunta nueva, ya que es raro que se reactive la conversación en un tema tan viejo. Planteá el problema, lo que tenés hecho y el código que tengas sobre esto, así conseguís mejores respuestas de la genet que trabaja con JSP y Servlets.
Le é además todo este hilo de conversación porque la cuestión tiene limitaciones dependiendo del paradigma a usar.
Saludos!

0voto

Peter comentado

Por favor abre una pregunta nueva Guadalupe Frausto.

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta