CommonsMultipartResolver and spring session disturb each other

480 Views Asked by At

There is the config of multi part config in spring boot

@Bean
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("utf-8");
resolver.setMaxInMemorySize(20480);
resolver.setMaxUploadSize(2048000000);
return resolver;
}

It is right and work successfully,when the below dependency is added

           <dependency>
                <groupId>org.springframework.session</groupId>
                <artifactId>spring-session</artifactId>
            </dependency>

the below exception is raised:

[ERROR] org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present Required request part 'file' is not present

Where is wrong?

EDIT:

It is related controller:

@RequestMapping(value={"/save"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
  @ResponseBody
  public FileProviderDto save(@RequestParam("file") MultipartFile file, @RequestParam String fileCode)
     throws IOException, SQLException
   {
1

There are 1 best solutions below

0
On BEST ANSWER

I add this config and work correctly.

@Bean
public CommonsMultipartResolver multipartResolver() {
    CommonsMultipartResolver resolver = new CommonsMultipartResolver();
    resolver.setDefaultEncoding("utf-8");
    resolver.setMaxInMemorySize(20480);
    resolver.setMaxUploadSize(2048000000);
    return resolver;
}

@Bean
@Order(0)
public MultipartFilter multipartFilter() {
    MultipartFilter multipartFilter = new MultipartFilter();
    multipartFilter.setMultipartResolverBeanName("multipartResolver");
    return multipartFilter;
}

and skip MultipartAutoConfiguration.class like this:

@SpringBootApplication(exclude = { MultipartAutoConfiguration.class })