style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Obtener Path en cualquier browser

Buen dia espero me pueda ayudar, quiero leer un archivo txt en java, el cual al momento de seleccionar el archivo en un JSP con INTERNET EXPLORER lo puedo leer sin problemas y me devuelve el path correcto pero en CHROME o FIREFOX me pone lo siguiente E:\Servidores\apache-tomcat-7.0.62\bin\demo.txt, lo cual no es correcto, alguien puede ayudarme? Gracias

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

A que te refieres con leer?

A que te refieres con leer? Yo entiendo a que es escribir código que use alguna clase en Java ( como java.io.File )

Tienes un JSP con un <input type=file>? o a que te refieres con "seleccionar el archivo en un jsp"?

Con chrome y firefox te devuelve un valor incorrecto, pero ¿cual es el correcto?

OK. en mi jsp estoy usando un

OK. en mi jsp estoy usando un input type=file, me aparece un boton para seleccionar un archivo, al momeno de seleccionarlo en chrome o firefox me aparece la ruta antes mencionada, la del servidor.... siempre me muestra esa ruta, pero por ejemlo en Explorer me muestra la ruta "real", es decir E:\Usuarios\demo.txt, o esta otra
E:\Usuarios\jluisc\Documents\NetBeansProjects\demo.txt y me marca error en los navegadores por q no localiza el archivo

Cuando usas un formulario

Cuando usas un formulario como este:

<form action="/" method="post" enctype="multipart/form-data">
   <input type="file" >
   <input type="submit" value="Enviar">
</form>

No te manda la ruta del archivo, le manda el archivo mismo y en el servidor lo que recibes son los bytes del contenido. Después el servidor (tu código) lo debe de leer y escribir en algún lado.

El mensaje incluye ciertamente el nombre del archivo. Al parecer chrome y ff no incluyen el path y tu lo estás pegando a tu ubicación actual. Algo como:

File file = new File( nombreDelArchivoRecibido );
crear file etc. etc.

Si el valor es demo.txt el código anterior lo va a poner en la raíz de tu server ( como estás viendo ), si el valor es C://algo/algo/algo/demo.txt ( que es lo que IE te está mandando aparentemente ) el código anterior lo va a crear en esa ruta, que resulta es la misma donde lo estás eligiendo! Pero si viene de cualquier otra máquina esa ruta no existirá ( por ejemplo en mac sería /Users/alguien/Desktop/demo.txt ) Más aún es muy peligroso que guardes archivos donde el usuario te diga, porque si te dice que el archivo es C://Windows/system32/window.dll y tu creas el archivo ahí pues adios máquina.

Lo que tienes que hacer es tomar el nombre solamente e ignorar el path y guardarlo donde tu indiques:

File uploads = new File("C://temp/myapp/files");
String name = new File( nombreDelArchivoRecibido ).getName(); // obten solo el nombre, no la ruta.
File file = new File( uploads /* el directorio donde se va a crear */, name ); // va a crear C:/temp/myapp/files/demo.txt siempre
crear file etc. etc.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">