|
对于最新的稳定版本,请使用 Spring Framework 7.0.6! |
多部分解析器
MultipartResolver 来自 org.springframework.web.multipart 包,是一种用于解析多部分请求(包括文件上传)的策略。提供了一个基于容器的
StandardServletMultipartResolver 实现,用于解析 Servlet 多部分请求。
请注意,基于 Apache Commons FileUpload 的过时 CommonsMultipartResolver 已不再可用,这是 Spring Framework 6.0 及其新的 Servlet 5.0+ 基线的变化。
要启用多部分处理,您需要在您的
MultipartResolver Spring配置中声明一个名称为multipartResolver的DispatcherServlet bean。
DispatcherServlet会检测到它,并将其应用于传入的请求。当接收到内容类型为multipart/form-data的POST请求时,解析器会解析内容,将当前HttpServletRequest包装为MultipartHttpServletRequest,以提供对已解析文件的访问,同时还将各部分作为请求参数公开。
Servlet 多部分解析
Servlet 多部分解析需要通过 Servlet 容器配置来启用。 为此:
-
在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多部分配置完成后,您可以添加一个类型为StandardServletMultipartResolver、名称为multipartResolver的bean。
|
此解析器变体直接使用您的Servlet容器的多部分解析器,可能会使应用程序暴露于容器实现差异中。默认情况下,它会尝试使用任何 |