2010-08-18 30 views
6

Me está resultando muy difícil lidiar con solicitudes multipart/form-data con mi servidor de aplicaciones java. Por lo que he descubierto, la especificación de servlet 3.0 proporciona métodos como HttpServletRequest.getParts(), que sería ideal para procesar los datos del formulario cargados en mi servlet.¿Cómo puedo manejar solicitudes POST multipart/form-data en mi servlet java?

Sin embargo, este método es parte de la especificación 3.0 servlet, y mi servidor de aplicaciones (Tomcat 6) aún no es compatible. Incluso con un archivo web.xml 3.0 válido y el Java EE 6 libs, me sale el siguiente excepción al intentar llamar getParts():

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getParts()Ljava/util/Collection; 

conmutación servidores de aplicaciones no es realmente una opción viable para este proyecto. ¿Hay bibliotecas de terceros disponibles para procesar datos multipart/form dentro de los servlets de Java?

+2

No se puede compilar en contra de los Java EE 6 libs y esperar que funcione con Tomcat 6 - el Java EE 6 libs sólo proporcionan las interfaces, es necesario un servidor de aplicación que en realidad implementa esas interfaces. – Jesper

Respuesta

11

Echa un vistazo Apache Commons Fileupload. Le da una API programática para analizar una solicitud de varias partes y recorrer las partes de forma individual.

Lo he utilizado en el pasado para el procesamiento directo de varias piezas y hace el trabajo bien sin ser demasiado complicado.

+0

¡Sí! Esto es exactamente lo que necesitaba. –

5

Tomcat 6 does not and will not support Servlet Specification 3.0. Debería intentar hacer esto en Tomcat 7, pero no estoy seguro de si esta funcionalidad está presente en la versión beta actualmente disponible. Sin embargo, se espera que la funcionalidad esté presente en la versión de producción.

Puede seguir utilizando Apache Commons FileUpload como publicado en la otra respuesta, o puede usar Glassfish (dependiendo de la fase actual y el tipo de su proyecto).

1

cuando utilizamos el método de publicación que los datos están cifrados, por lo que tenemos que usar servletfileupload para obtener los datos solicitados y utilizando FileItemIterator podemos obtener todos los datos del formulario.

Ya respuesta en este enlace How to process a form sent Google Web Toolkit in a servlet

Cuestiones relacionadas