Foros del Web » Programación para mayores de 30 ;) » Java »

Problema al guardar archivo en la ruta de la apliación. (Struts2)

Estas en el tema de Problema al guardar archivo en la ruta de la apliación. (Struts2) en el foro de Java en Foros del Web. Hola, escribo para ver si me podíais resolver un problema. Hago un breve resumen: Estoy creando una aplicación web con Struts 2, a la que ...
  #1 (permalink)  
Antiguo 20/08/2010, 14:10
 
Fecha de Ingreso: agosto-2010
Mensajes: 6
Antigüedad: 9 años, 2 meses
Puntos: 1
Problema al guardar archivo en la ruta de la apliación. (Struts2)

Hola,

escribo para ver si me podíais resolver un problema. Hago un breve resumen:

Estoy creando una aplicación web con Struts 2, a la que quiero poder subir imágenes.

Trabajando en el action uploadfileaction.java , la imagen subida la recibo correctamente en mi variable "archivo".

En la dirección de mi aplicación, tengo la carpeta donde me gustaría guardarlas:

http://localhost:8084/NombreApp/img

Si le indico la ruta absoluta la guardo correctamente. (Por ejemplo C:\)
Pero no sé a la hora de abrir mi fichero, que ruta introducirle para conseguir la de la carpeta deseada (img):

String nombre_archivodestino = "prueba.jpg";
File archivodestino = new File(RutaAbsoluta + nombre_archivodestino);

En otro File, tengo el archivo origen que es el que me han subido al servidor (se guarda como un fichero temporal), y lo que hago es mediante FileStreams una copia del origen al destino.

He probado poniendo como RutaAbsoluta "\\img\\" o "img\\" ...etc Incluso no poniendo nada, para ver donde me lo guarda, en cuyo caso funciona y lo guarda en C:\

Como imagino que tendré que averiguar la ruta abosluta, he mirado por ahí que usando el getContextPath() de HttpServletRequest o algo así, se podía, pero al trabajar con struts no sé como acceder a las request


Muchas gracias por leerme y dedicar vuestro tiempo ;)
Un saludo!
  #2 (permalink)  
Antiguo 21/08/2010, 06:08
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 10 años, 6 meses
Puntos: 306
Respuesta: Problema al guardar archivo en la ruta de la apliación. (Struts2)

¿Lo quieres guardar fuera del árbol de directorios de tu aplicación web?

Lo normal sería que lo dejaras en los directorios de la aplicación. Si quisieras guardarlo en WebContent > images, lo único que tendrías que pasarle como path sería "images\".
  #3 (permalink)  
Antiguo 21/08/2010, 08:10
 
Fecha de Ingreso: agosto-2010
Mensajes: 6
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Problema al guardar archivo en la ruta de la apliación. (Struts2)

Hola Xerelo, gracias por contestar!

Sí, lo que quiero es guardarlo dentro de los directorios de mi aplicación. Lo que pasa que solo había conseguido que me funcionara dando la ruta absoluta en "C:\" por ejemplo.

Ya he probado poniendo "img\\", "\\img\\"... etc Pero como no sé donde se está ejecutando el action en tiempo de ejecución, no sé en que carpeta del arbol de directorios se encuentra...

Si no le paso url y simplemente le digo como ruta el archivo "prueba.jpg",
entonces no me lo tendría que guardar en el directorio raiz de mi aplicación?

Pues me lo guarda en "C:\",

Tengo el proyecto hecho en NetBeans, con el servidor sea el Tomcat, y la estructura de directorios es esta.



Y sería guardarlo en ese directorio "img", ya que las páginas JSP que tengo están a la hora de poner la URL en el directorio raiz de mi "AplicacionWeb", la ruta de la carpeta debería ser "http://localhost:8084/AplicacionWeb/img", no?

El archivo desde donde guardo el archivo es en el fileuploadaction.java, dentor del paquete "action" en Source packages, no sé si el estar aquí en vez de el JSP varía la ruta.

Un saludo!

Última edición por ripoljorge; 21/08/2010 a las 09:11
  #4 (permalink)  
Antiguo 21/08/2010, 10:36
 
Fecha de Ingreso: agosto-2010
Mensajes: 6
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Problema al guardar archivo en la ruta de la apliación. (Struts2)

En teoría según estoy viendo, al desplegar el proyecto, los paquetes de fuentes que hay, los guarda en la carpeta WEB-INF, dentro de un directorio CLASSES

Es decir, en teoría en lo referente a url's el proyecto quedaría así:

META-INF/
WEB-INF/
-----classes/
------------action/
------------------fileuploadaction.java <---- Aqui es desde donde creamos el fichero
------------DAO/
------------DTO/
------------modelo/
------------xml/
------------struts.xml
------lib/
------web.xml
img/
index.jsp
login.jsp
fileupload.jsp
register.jsp

También he metido una carpeta "img" dentro del directorio WEB-INF, para probar suerte...
Según esta estructura para llegar del fileuploadaction.java, hasta la carpeta img en el raiz, debo subir 3 niveles de directorios, he probado poniendo 3 niveles, 2, 1... y nada... Siempre me salta excepción

Con 3 niveles la ruta qeu pongo es esta "..\\..\\..\\img\\"


Además he probado metiendo yo a mano en la carpeta "img" del directorio raiz de la aplicación, una imagen de prueba. Y puedo acceder a ella desde la direccion normal: "http://localhost:8084/AplicacionWeb/img/prueba.jpg" sin ningún problema me aparece
  #5 (permalink)  
Antiguo 22/08/2010, 19:45
 
Fecha de Ingreso: agosto-2010
Mensajes: 6
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Problema al guardar archivo en la ruta de la apliación. (Struts2)

¿Nadie me puede ayudar? Seguro que es una tontería, un pequeño detalle pero no lo consigo... :P

Gracias!
  #6 (permalink)  
Antiguo 23/08/2010, 17:58
 
Fecha de Ingreso: agosto-2010
Mensajes: 6
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Problema al guardar archivo en la ruta de la apliación. (Struts2)

Bueno, al fin lo he conseguido. Por si en la posteridad le interesa a alguien, así es como lo he hecho.

En mi action "fileuploadaction.java" he importado "org.apache.struts2.ServletActionContext"

Y con esta línea nos devuelve un String con la ruta absoluta del path principal de la aplicación web.

Código:
ServletActionContext.getRequest().getSession().getServletContext().getRealPath("/");
.
Luego a esta cadena solo he tenido que concatenarle ( "img/" + nombre_de_la_imagen )

Y listo, la guarda perfectamente.

Por lo que he leído por ahí, no se puede acceder a las rutas relativas de la aplicación web desde el código, y hay que obtener la ruta absoluta.

Saludos!
  #7 (permalink)  
Antiguo 29/03/2015, 14:08
 
Fecha de Ingreso: marzo-2015
Mensajes: 4
Antigüedad: 4 años, 7 meses
Puntos: 0
Respuesta: Problema al guardar archivo en la ruta de la apliación. (Struts2)

yo tengo un problema similar, sucede que yo he creado una aplicacion web y me funciona bien en glassfish pero cuando alojo dicha aplicacion en mi dominio no se donde alojar la clase que contiene la accion del formulario

<form action="Acceder" id="form" method="post">

Etiquetas: ruta, struts
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:47.