Я пытаюсь использовать CommonsMultipartResolver
в приложении Spring Boot. Я не могу использовать StandardServletMultipartResolver
, поскольку я хочу обрабатывать исключения (например, превышение размера файла).Не удается настроить CommonsMultipartResolver с Spring Boot 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
В противном случае, я получаю исключение, что параметр части не присутствует в запросе.
Я считаю, что мне нужно отключить сервлет 3.0 обработки многочастных запросов, но я не могу понять, как это сделать весной.
Судя по трассе стека, похоже, что вы используете Jetty, о котором вы нигде не упомянули. Чтобы избежать любых других расхождений, можете ли вы представить минимальный пример, который воспроизводит проблему? –