MultipartResolver
del paquete org.springframework.web.multipart
es una estrategia para
analizar solicitudes de varias partes, incluidas las cargas de archivos. Hay una implementación basada en FileUpload del proyecto
Commons y otra basada en el análisis de consultas multiparte. Servlet 3.0.
Para habilitar el procesamiento multiparte, debe declarar un bean MultipartResolver
en la configuración
DispatcherServlet
de Spring con el nombre multipartResolver
.
DispatcherServlet
lo detectará y lo aplicará a la solicitud entrante. Al recibir una POST con el tipo
de contenido multipart/form-data
, el solucionador analiza el contenido ajustando el HttpServletRequest
actual como MultipartHttpServletRequest
para proporcionar acceso a archivos reconocidos además de
exponer componentes como parámetros de consulta.
FileUpload
de archivos desde Apache Commons
Para usar FileUpload
de Apache Commons, puede configurar un bean de tipo
CommonsMultipartResolver
llamado multipartResolver
. También necesitas tener el archivo jar
commons-fileupload
como una dependencia en tu classpath.
Esta variante de resolución delega autoridad a una biblioteca local dentro de la aplicación, proporcionando máxima portabilidad multiplataforma entre contenedores de servlets. Alternativamente, puede utilizar el reconocimiento de servlet multiparte estándar a través del propio analizador del contenedor, como se describe a continuación.
Commons FileUpload tradicionalmente solo se aplica a solicitudes POST, pero acepta cualquier tipo de contenido
multipart/
. Para obtener detalles y opciones de configuración, consulte el javadoc en CommonsMultipartResolver
.
Servlet 3.0
El análisis multiparte según la especificación Servlet 3.0 debe estar habilitado en la configuración del contenedor de servlet. Para hacer esto:
-
En Java, configure
MultipartConfigElement
para registrar servlets. -
En
web.xml
, agregue una sección"<multipart-config>"
a la declaración del servlet.
El siguiente ejemplo muestra cómo configurar MultipartConfigElement
para registrar servlets:
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
// ...
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
// Opcionalmente también establece maxFileSize, maxRequestSize, fileSizeThreshold
registration.setMultipartConfig(new MultipartConfigElement("/tmp"));
}
}
class AppInitializer : AbstractAnnotationConfigDispatcherServletInitializer() {
// ...
override fun customizeRegistration(registration: ServletRegistration.Dynamic) {
// Opcionalmente también establece maxFileSize, maxRequestSize, fileSizeThreshold
registration.setMultipartConfig(MultipartConfigElement("/tmp"))
}
}
Una vez creada la configuración de Servlet 3.0, puede agregar un bean de tipo
StandardServletMultipartResolver
llamado multipartResolver
.
Esta opción de reconocimiento utiliza el analizador de varias partes de su contenedor de servlets tal como está,
exponiendo potencialmente la aplicación a diferencias en la implementación del contenedor. De forma
predeterminada, el analizador intentará analizar cualquier tipo de contenido multipart/
utilizando
cualquier método HTTP, pero es posible que esto no sea compatible con todos los contenedores de servlets. Para
obtener detalles y opciones de configuración, consulte el javadoc en StandardServletMultipartResolver
.
GO TO FULL VERSION