Tengo el siguiente bloque de código que maneja la carga de archivo de una foto que estoy usando en mi aplicación web Spring MVC. Estoy utilizando Spring MVC CommonsMultipartFileResolver para manejar las cargas de archivos.Problema con Spring FileUpload
if(model.getPhoto() != null){
if(!model.getPhoto().isEmpty()){
MultipartFile file = model.getPhoto();
String fileName = file.getOriginalFilename();
String filePath = baseDirectory + fileName;
FileOutputStream fos = new FileOutputStream(filePath);
try
{
fos.write(file.getBytes());
agentProfile.setPhotoUri(fileName);
}
catch (IllegalStateException e)
{
System.out.println(e);
}
finally
{
fos.close();
}
}
}
En mi archivo app-servlet.xml tengo el siguiente código para configurar el bean de resolución MultipartFile.
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
Tengo algunos problemas al azar cuando estoy cargando fotos.
1) Si voy a subir una foto más pequeña, alrededor de 3 kb o menos, se cargará correctamente.
2) Si voy a subir una foto un poco más grande, creará el archivo en el directorio, pero con un tamaño de 0 bytes y aparecerá el siguiente mensaje de error.
java.lang.IllegalStateException: File has been moved - cannot be read again
org.springframework.web.multipart.commons.CommonsMultipartFile.getBytes(CommonsMultipartFile.java:112)
com.mmz.admin.mvc.controller.AddAgentController.processFinish(AddAgentController.java:145)
org.springframework.web.servlet.mvc.AbstractWizardFormController.validatePagesAndFinish(AbstractWizardFormController.java:642)
org.springframework.web.servlet.mvc.AbstractWizardFormController.processFormSubmission(AbstractWizardFormController.java:492)
org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:265)
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
he intentado un par de diferentes opciones de configuración de la resolución de varias partes, como cambiar a manejar una CommonsMultipartFile objeto como se oponen a una llanura MultipartFile objeto, pero nada cambió.
También intenté configurar manualmente el tamaño máximo de carga en el bean CommonsMultipartFileResolver con la siguiente propiedad.
<property name="maxUploadSize" value="1024000000"/>
nada ha cambiado también. No estoy seguro de qué es CommonsMultipartResolver predeterminado en cuanto al tamaño del archivo que se puede cargar, pero esa no es mi pregunta.
Me han dicho que el problema que estoy experimentando se debe a un problema en el analizador/controlador de Multipart que está usando la primavera. Tengo una publicación reciente sobre este mismo problema, y debido a que se encontró nueva información, quise volver a publicar la nueva información. La publicación anterior se puede encontrar en CommonsMultipartFileResolver Problem
Creo que he comprobado casi todos los recursos en Internet para encontrar documentación adicional, pero no puedo resolver el problema.
Por favor, ayúdenme a descubrir qué está pasando con esto, y si hay una mejor, solución más simple para tal vez explorar esas opciones, pero preferiría seguir con mi método actual si puedo encontrar una solución.
EDITAR Nota-He estado experimentando con diferentes fotos de tamaño para cargar, y yo creo que el límite que me permite cargar es de alrededor de 10Kb. Cualquier cantidad superior a 10 Kb provoca que se rompa y me da el error anterior.
ver http://stackoverflow.com/questions/11792107/multipartresolver-is-not-working – lrkwz