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

Problema al subir imagenes struts2

Estas en el tema de Problema al subir imagenes struts2 en el foro de Java en Foros del Web. Buenas a todos!!! Tengo un problema a la hora de subir archivos con struts2. Tengo un jsp con una s:select y un s:file: Cita: <s:form ...
  #1 (permalink)  
Antiguo 14/06/2011, 01:29
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
Problema al subir imagenes struts2

Buenas a todos!!!

Tengo un problema a la hora de subir archivos con struts2.
Tengo un jsp con una s:select y un s:file:

Cita:
<s:form theme="simple" enctype="multipart/form-data" method="POST" id="formulario" target="iframe" action="guardarImagen">
<div class="form-item form-item-text marginTop10px">
<label for="nombre" class="floatLeft label marginTop10px marginRight10">
<s:text name="imagen.posicion" />*</label>
<s:select headerKey="-1"
headerValue="%{getText('ficha.opcion.seleccionar') }"
cssClass="ftl mrgr-5" list="posiciones" listValue="label"
listKey="value" name="posicion" id="posicion"
value="#session.VALOR_POSICION">
</s:select>

<div class="clear"></div>
</div>

<div class="form-item form-item-text ">
<label for="nombre" class="floatLeft label marginRight10">
<s:text name="imagen.imagen" />*
</label>
<s:file id="imagen" name="imagen" />
<s:text name="fondos_personales.guardarImagen.tamanioMax"> </s:text>
<div class="clear"></div>
</div>
<s:if test="modificarImagen.equals(\"true\")">
<div style="text-align: center;"><a style="margin-left: -20px;"
href="javascript:actualizarImagen();"><img
alt='<s:text name="acciones.adjuntarImagen"/>'
title='<s:text name="acciones.adjuntarImagen"/>'
src="images/ico/clip.png" /> </a></div>
</s:if>
<s:else>
<div style="text-align: center;">
<a style="margin-left: -20px;" href="javascript:guardarImagen();">
<img alt='<s:text name="acciones.adjuntarImagen"/>'
title='<s:text name="acciones.adjuntarImagen"/>'
src="images/ico/clip.png" />
</a>
</div>
</s:else>
<iframe name="iframe" id="idIframe" style="display: none;"></iframe>
<s:hidden name="idFichero" />
</s:form>
En el archivo struts.xml tengo:

Código XML:
Ver original
  1. <action name="guardarImagen" class="fondosPersonalesAction" method="guardarImagen">
  2.         <interceptor-ref name="fileUpload">
  3.                 <param name="maximumSize ">1024000000</param>
  4.         </interceptor-ref>
  5.         <result name="success">/jsp/fondos_personales/redireccionar_listado_imagenes.jsp </result>
  6.         <result name="input">/jsp/fondos_personales/redireccionar_modificar_imagen.jsp </result>
  7. </action>

Y en el Action la función que sube la imagen.

Cuando subo un archivo menor de 2MB no hay ningun problema, el problema es que si subo un archivo mayor de 2MB, no me llegan los datos que mando a través de struts2, el decir, el valor del select y algun s:hidden me llegan en el action como null. Por lo que he leido por ahi, pasandole el parametro al interceptor debería funcionar, pero no es así...

Alguien puede ayudarme??
Muchas gracias!!
  #2 (permalink)  
Antiguo 14/06/2011, 02:14
 
Fecha de Ingreso: mayo-2011
Mensajes: 79
Antigüedad: 13 años, 5 meses
Puntos: 14
Respuesta: Problema al subir imagenes struts2

Código:
There are two separate file size limits. First is struts.multipart.maxSize which comes from the Struts 2 default.properties file. This setting exists for security reasons to prohibit a malicious user from uploading extremely large files to file up your servers disk space. This setting defaults to approximately 2 megabytes and should be adjusted to the maximum size file (2 gigs max) that your will need the framework to receive. If you are uploading more than one file on a form the struts.multipart.maxSize applies to the combined total, not the individual file sizes The other setting, maximumSize, is an interceptor setting that is used to ensure a particular Action does not receive a file that is too large. .Notice the locations of both settings in the following example:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC 
	"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
	"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.multipart.maxSize" value="1000000" />
    
    <action name="doUpload" class="com.example.UploadAction">
        <interceptor-ref name="basicStack"/>
        <interceptor-ref name="fileUpload">
            <param name="maximumSize">500000</param>
        </interceptor-ref> 
        <interceptor-ref name="validation"/>
        <interceptor-ref name="workflow"/>

        <result name="success">good_result.jsp</result>
    </action>
</struts>
En el default.properties se fija a 2Mb por defecto el valor total máximo de subida por archivo. Cámbialo y listo.

Saludos
__________________
Web Admin:
http://www.coretec.es
Tutoriales, Noticias y Recursos Liferay y J2EE
  #3 (permalink)  
Antiguo 14/06/2011, 02:27
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Problema al subir imagenes struts2

Con el default.properties te refieres al struts.properties??

El struts.properties ahora lo tengo asi:

Cita:
struts.devMode = false
struts.custom.i18n.resources = fondospersonales
struts.objectFactory = org.apache.struts2.spring.StrutsSpringObjectFactor y
struts.multipart.maxSize=1024000000
y el struts.xml asi:

Código XML:
Ver original
  1. <constant name="struts.multipart.maxSize" value="1024000000" />
  2.  
  3. <action name="guardarImagen" class="fondosPersonalesAction" method="guardarImagen">
  4.      <interceptor-ref name="fileUpload">
  5.           <param name="maximumSize ">1024000000</param>
  6.      </interceptor-ref>
  7.      <result name="success">/jsp/fondos_personales/redireccionar_listado_imagenes.jsp </result>
  8.      <result name="input">/jsp/fondos_personales/redireccionar_modificar_imagen.jsp </result>
  9. </action>

Me sigue ocurriendo lo mismo...Al action me llegan valores los valores como null si el archivo es mayor de 2mb

Gracias por la respuesta!!!
  #4 (permalink)  
Antiguo 14/06/2011, 07:59
 
Fecha de Ingreso: mayo-2011
Mensajes: 79
Antigüedad: 13 años, 5 meses
Puntos: 14
Respuesta: Problema al subir imagenes struts2

¿Puedes probar rebajar un poco el limite para probar con algo como:

struts.multipart.maxSize=5242880? que serían 5Mb

dime si te deja subir ficheros de mas de 2mb. Es que me resulta raro, te debería estar funcionando ya, pero la cantidad que tienes peusta de límite es algo bestia y no se si lo que hay detrás que no sera mas que las common-fileupload tendra algun limite.

Prueba y me cuentas.

Gracias
__________________
Web Admin:
http://www.coretec.es
Tutoriales, Noticias y Recursos Liferay y J2EE
  #5 (permalink)  
Antiguo 15/06/2011, 04:57
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Problema al subir imagenes struts2

Ya me funciona!!
Los parametros me estaban llegando pero por lo que sea no me estaba seteando correctamente las variables.
He obtenido los valores de la respuesta con:

Cita:
this.imagen = ((File[])ActionContext.getContext().getParameters().get("i magen"))[0];
Luego me dio error de Java Heap, subi la memoria y ya me funciona correctamente!!

Muchas gracias por tus respuestas!!!

Etiquetas: imagenes, 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 07:08.