我正在嘗試在我的Spring Boot應用程序中使用CommonsMultipartResolver
。我不能使用StandardServletMultipartResolver
,因爲我想處理異常(例如超出文件大小)。無法使用Spring Boot配置CommonsMultipartResolver 1.2.8
我建立了一個依賴commons-fileupload
。我的春天配置是:
@Autowired
private MultipartProperties multipartProperties = new MultipartProperties();
@Bean
public MultipartConfigElement multipartConfigElement() {
return this.multipartProperties.createMultipartConfig();
}
@Bean
public MultipartResolver multipartResolver() {
LOG.debug("initializing MultipartResolver");
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
return multipartResolver;
}
@Bean
public FilterRegistrationBean multipartFilterRegistrationBean() {
final MultipartFilter multipartFilter = new MultipartFilter();
final FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(multipartFilter);
multipartFilter.setMultipartResolverBeanName("multipartResolver");
filterRegistrationBean.setOrder(OrderedHiddenHttpMethodFilter.DEFAULT_ORDER-1);
return filterRegistrationBean;
}
當我設置了MultipartFilter
到HiddenHttpMethodFilter
我得到一個IOException
被前執行:
Caused by: java.io.IOException: Missing content for multipart request
at org.eclipse.jetty.util.MultiPartInputStreamParser.parse(MultiPartInputStreamParser.java:491)
at org.eclipse.jetty.util.MultiPartInputStreamParser.getParts(MultiPartInputStreamParser.java:400)
at org.eclipse.jetty.server.Request.getParts(Request.java:2139)
at org.eclipse.jetty.server.Request.extractMultipartParameters(Request.java:385)
... 35 common frames omitted
否則,我得到一個異常的部分參數不存在在請求中。
我相信我需要禁用servlet 3.0處理multipart請求,但我無法弄清楚如何在spring啓動時執行它。
通過堆棧跟蹤來判斷,它看起來像您使用的Jetty,您沒有在任何地方提及過。爲了避免出現其他差異,您能否提供一個能夠重現問題的最小示例? –