多部分解析器
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 方法解析任何 |