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

subir archivo a servidor usando Struts2

Estas en el tema de subir archivo a servidor usando Struts2 en el foro de Java en Foros del Web. Hola a todos tengo la siguiente pregunta que hasta hoy surge: En la empresa donde trabajo me pidieron una interface donde ellos puedan subir archivos ...
  #1 (permalink)  
Antiguo 30/01/2012, 14:12
 
Fecha de Ingreso: agosto-2011
Ubicación: d.f
Mensajes: 283
Antigüedad: 12 años, 8 meses
Puntos: 4
subir archivo a servidor usando Struts2

Hola a todos tengo la siguiente pregunta que hasta hoy surge:

En la empresa donde trabajo me pidieron una interface donde ellos puedan subir archivos de excel al servidor y checarlos mediante consultas, he encontrado que struts2 tiene la opcion

Código PHP:
<s:file></s:file
tengo dudas por ejemplo:

1.- Cuando suban ellos ese archivo lo puedo mandar a una carpeta dentro de mi proyecto?

2.- Quiero agregar esa ruta a Mysql, en esta parte estoy confundido como agrego la ruta pues?

alguien que me ayude
  #2 (permalink)  
Antiguo 30/01/2012, 23:50
 
Fecha de Ingreso: agosto-2011
Ubicación: d.f
Mensajes: 283
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: subir archivo a servidor usando Struts2

nadie ha trabajado con este tag?
  #3 (permalink)  
Antiguo 31/01/2012, 00:06
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 5 meses
Puntos: 24
Respuesta: subir archivo a servidor usando Struts2

Para tu pregunta 1, veamos lo que dice la documentación de Struts 2.
Cita:
Iniciado por Apache Struts 2 Documentation
All uploaded files are saved to a temporary directory by the framework before being passed in to an Action. Depending on the allowed file sizes it may be necessary to have the framework store these temporary files in an alternate location. To do this change struts.multipart.saveDir to the directory where the uploaded files will be placed. If this property is not set it defaults to javax.servlet.context.tempdir. Keep in mind that on some operating systems, like Solaris, /tmp is memory based and files stored in that directory would consume an amount of RAM approximately equal to the size of the uploaded file. Seguir leyendo...
Tu pregunta 2 no la entiendo...
  #4 (permalink)  
Antiguo 31/01/2012, 16:48
 
Fecha de Ingreso: agosto-2011
Ubicación: d.f
Mensajes: 283
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: subir archivo a servidor usando Struts2

Hola farfamorA ya logre subir ese archivo pero de manera temporal por lo que veo te muestro lo que me sale en el jsp que pongo como success cuando subo un archivo.


Código PHP:
File Name ejemplo.xls 
Content Type 
application/vnd.ms-excel 
File 
C:UsersAdministradorDesktopEclipseProyectos.metadata.pluginsorg.eclipse.wst.server.coretmp1workCatalinalocalhostSubirArchivoupload_b7cee83_13535ec3d32__8000_00000000.tmp 
ahora como le puedo hacer para ese archivo meterlo en una carpeta tal como lo mando ejemplo.xls

POR FAVOR AYUDA
  #5 (permalink)  
Antiguo 31/01/2012, 20:45
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 5 meses
Puntos: 24
Respuesta: subir archivo a servidor usando Struts2

Todo lo que necesitas está acá, sólo falta darle una leída.

Las propiedades pueden ser establecidas en el archivo struts.properties en WEB-INF/classes. Cualquier propiedad encontrada en este archivo sobreescribirá el valor por defecto correspondiente.

Una de esas propiedades es:

struts.multipart.saveDir - Es el directorio donde los archivos subidos serán colocados. Si no estableces esta propiedad, entonces por defecto será el valor de javax.servlet.context.tempdir.

Cita:
Iniciado por struts.properties
# coloca los archivos cargados en /tmp. My application will move them to their
# final destination
struts.multipart.saveDir=/tmp
El artículo también está en el wiki de Struts 2.
https://cwiki.apache.org/WW/handling-file-uploads.html
  #6 (permalink)  
Antiguo 01/02/2012, 05:17
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: subir archivo a servidor usando Struts2

Hola herwex,
yo he trabajado con este TAG para upload de ficheros. En Struts2 prácticamente no hay que hacer casi nada para subir ficheros, pues con el TAG file y 3 métodos SET en el action, ya tienes el fichero/s subidos. Por defecto, tienen un nombre "temporal" que tú debes cambiar y ponerlo donde quieras.

Un saludo.
  #7 (permalink)  
Antiguo 01/02/2012, 09:23
 
Fecha de Ingreso: agosto-2011
Ubicación: d.f
Mensajes: 283
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: subir archivo a servidor usando Struts2

Muchas gracias a ambos por sus respuestas, farfamorA seguire este tutorial, ElAthlit como tu ya tienes experiencia con este tag he logrado subir ya el archivo con el nombre "temporal" lo que quiero ahora es meter ese archivo con su extension original ya a una carpeta y es ahi donde ocupo ayuda, como lo has hecho tu?
  #8 (permalink)  
Antiguo 01/02/2012, 11:03
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: subir archivo a servidor usando Struts2

Hola herwex,
entiendo que el upload lo has hecho usando las herramientas de Struts2 únicamente, es decir, en el JSP usando el TAG <s:file> y en el action los 3 métodos setter para recoger el fichero, tipo y nombre. (file, fileContentType, fileFileName)

Cuando tienes el fichero subido (con ese nombre temporal), tienes el objeto file con toda la información del fichero que acabas de subir. Ahí tienes el nombre, extension, tamaño, etc...

Simplemente te queda hacer la copia normal de fichero en la ubicación que quieras.
Si la ubicación es dentro de la aplicación web, tendrás que preguntar a ServletContext cual es el path.

El Path origen lo tienes en el objeto file que acabas de subir. El path destino, el que escogas.
Solo te queda copiar y pegar.

Los pasos vienen a ser estos, si estás atascado en alguno dímelo y lo vamos mirando.

Un saludo!
  #9 (permalink)  
Antiguo 01/02/2012, 12:14
 
Fecha de Ingreso: agosto-2011
Ubicación: d.f
Mensajes: 283
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: subir archivo a servidor usando Struts2

Hola ElAthlit he seguido lo que me has comentado te pongo codigo:

Código PHP:

public String execute() throws Exception{
         
 try {            
            
String filePath ServletActionContext.getRequest().getSession().getServletContext().getRealPath("/");   ----->pregunto a ServletContext cual es el path

              
             
 
String concatenar "yeah/"+fileUploadFileName;
 
String FinalArchivo=filePath.concat(concatenar);  ---->agrego a que carpeta lo quiero agregar que en este caso es "yeah" y el nombre del archivo
             
 File fileToCreate 
= new File(FinalArchivo);  ----->creo el nuevo archivo
 FileUtils
.copyFile(this.fileUploadfileToCreate); -----> Copio el archivo temporarl al xls. (NECESITO SUBIR ARCHIVOS EXCEL)         
         } 
         catch (
Exception e) {            
             
e.printStackTrace();            
             
addActionError(e.getMessage());             
                   }       
         return 
SUCCESS

PERO NO ME APARECE EN LA CARPETA DEL PROYECTOOOOOO YA NO SE QUE HACER!!!!
  #10 (permalink)  
Antiguo 01/02/2012, 12:42
 
Fecha de Ingreso: agosto-2011
Ubicación: d.f
Mensajes: 283
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: subir archivo a servidor usando Struts2

Hola ElAthlit por favor no hagas caso al msj anterior que deje, ya logre hacerlo ya me aparece el archivo tal como yo lo subo pero me surge una pregunta
veo la ruta donde me crea el archivo que es la siguiente:

Código PHP:
C:UsersAdministradorDesktopEclipseProyectos.metadata.pluginsorg.eclipse.wst.server.coretmp1wtpwebappsSubirArchivoyeah 
y dentro de la carpeta yeah me pone el archivo excel que subi, hasta aqui todo bien pero mi pregunta es yo hago refresh sobre el proyecto que tengo en eclipse pero no me aparece ni la carpeta ni el archivo dentro de la carpeta que acabo de hacer? mmmm algo estoy haciendo mal?

subo el codigo con el cual creo el archivo

Código PHP:
public String execute() throws Exception{
         try {            
            
String filePath ServletActionContext.getRequest().getSession().getServletContext().getRealPath("/");    
             
             
String concatenar "yeah/";
             
String FinalArchivo=filePath.concat(concatenar);
             
             
File fileToCreate = new File(FinalArchivothis.fileUploadFileName);  
             
FileUtils.copyFile(this.fileUploadfileToCreate); 
             
        
         
         } 
         catch (
Exception e) {            
             
e.printStackTrace();            
             
addActionError(e.getMessage());             
                   }       
         return 
SUCCESS;
    
        
 
    } 
  #11 (permalink)  
Antiguo 02/02/2012, 02:43
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: subir archivo a servidor usando Struts2

Ok, estupendo!

Veo lo siguiente:
Código Java:
Ver original
  1. C:UsersAdministradorDesktopEclipseProyectos.metadata.pluginsorg.eclipse.wst.server.coretmp1wtpwebappsSubirArchivoyeah

Solo comentarte dos cosas:
1.- La carpeta final la tienes concatenada con la carpeta wtpwebapps. Quizás fue cosa del copiar/pegar y no tiene importancia. ¿Lo tienes separado con barra?
2.- Esa carpeta es temporal, eclipse de vez en cuando hace limpieza. Es normal subir un archivo, tenerlo un tiempo (unas cuantas ejecuciones) y que luego desaparezca. No te preocupes.

Si llevas el proyecto a un Tomcat, verás como permanece ahí fijo.


Un saludo!
  #12 (permalink)  
Antiguo 02/02/2012, 09:35
 
Fecha de Ingreso: agosto-2011
Ubicación: d.f
Mensajes: 283
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: subir archivo a servidor usando Struts2

Gracias ElAthlit por tus consejos y respecto a los dos puntos:

1.- SI lo tengo separado por diagonal invertida pero al ponerla en la pagina y publicarla me la quita y aparece todo el texto junto.

2. - Esa ruta que tengo ahi la quiero meter en la base de datos y traerla cuand la solicite y abrir el xls a traves de un link, poniendo esa ruta tal como la que te puse
y jalandola a traves de un link me abrira el archivo?

Espero haber expresado claro este punto
  #13 (permalink)  
Antiguo 02/02/2012, 09:42
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: subir archivo a servidor usando Struts2

Hola,
la ruta no hace falta meterla en la base de datos porque esa ruta ya la tienes preguntando a ServletContext por el PathReal de la aplicación.
¿Y si un dia cambias de servidor? Las rutas que tienes en la base de datos no te serviran.

Te recomiendo que almacenes en la base de datos la carpeta final únicamente, el resto del Path ya lo tienes siempre.

Esto te permitirá archivar por carpetas el dia de mañana (si tienes mucho volumen por ejemplo) independientemente del servidor donde esté la aplicación.

Un saludo.
  #14 (permalink)  
Antiguo 02/02/2012, 09:51
 
Fecha de Ingreso: agosto-2011
Ubicación: d.f
Mensajes: 283
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: subir archivo a servidor usando Struts2

Es cierto ElAthlit no habia pensado en eso!! una vez mas te agradezco por la ayuda y sacarme de dudas jeje

Etiquetas: mysql, servidor, struts2
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 14:01.