|
对于最新稳定版本,请使用 Spring Framework 7.0.6! |
Multipart解析器
MultipartResolver 来自 org.springframework.web.multipart 包,是一种用于解析多部分(multipart)请求(包括文件上传)的策略。Spring 提供了一个基于容器的 StandardServletMultipartResolver 实现,用于解析 Servlet 多部分请求。请注意,从 Spring Framework 6.0 开始,由于其新的 Servlet 5.0+ 基线要求,基于 Apache Commons FileUpload 的过时实现 CommonsMultipartResolver 已不再可用。
要启用多部分(multipart)处理,您需要在 MultipartResolver 的 Spring 配置中声明一个名为 DispatcherServlet 的 multipartResolver Bean。
DispatcherServlet 会检测到该 Bean 并将其应用于传入的请求。当接收到内容类型为 multipart/form-data 的 POST 请求时,解析器会解析请求内容,并将当前的 HttpServletRequest 包装为 MultipartHttpServletRequest,从而提供对已解析文件的访问,同时还将各部分内容作为请求参数公开。
Servlet 多部分解析
需要通过 Servlet 容器配置来启用 Servlet 的 multipart 解析功能。 为此,请执行以下操作:
-
在 Java 中,在 Servlet 注册上设置一个
MultipartConfigElement。 -
在
web.xml中,向 servlet 声明添加一个"<multipart-config>"部分。
以下示例展示了如何在 Servlet 注册上设置 MultipartConfigElement:
-
Java
-
Kotlin
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
// ...
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
// Optionally also set maxFileSize, maxRequestSize, fileSizeThreshold
registration.setMultipartConfig(new MultipartConfigElement("/tmp"));
}
}
class AppInitializer : AbstractAnnotationConfigDispatcherServletInitializer() {
// ...
override fun customizeRegistration(registration: ServletRegistration.Dynamic) {
// Optionally also set maxFileSize, maxRequestSize, fileSizeThreshold
registration.setMultipartConfig(MultipartConfigElement("/tmp"))
}
}
一旦配置好了 Servlet 的 multipart 设置,你就可以添加一个类型为 StandardServletMultipartResolver、名称为 multipartResolver 的 Bean。
|
此解析器变体原样使用您的 Servlet 容器的多部分解析器,
可能会使应用程序暴露于容器实现差异之下。
默认情况下,它将尝试解析任何带有任意 HTTP 方法的 |