多部分解析器
org.springframework.web.multipart 包中的 MultipartResolver 是一个用于解析包括文件上传在内的多部分请求的策略。对于 Servlet 多部分请求解析,有一个基于容器的 StandardServletMultipartResolver 实现。
要启用多部分处理,您需要在 DispatcherServlet Spring 配置中声明一个名为 multipartResolver 的 MultipartResolver 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 容器的多部分解析器,可能会使应用程序暴露于容器实现差异。默认情况下,它会尝试使用任何 HTTP 方法解析任何 |