当前位置: 首页 > 知识库问答 >
问题:

当我在Spring Boot应用程序中使用CommonsMultipartResolver时,MultipartFile为空

堵才哲
2023-03-14

我想在我的Spring Boot应用程序中实现上传处理程序方法。我想使用CommonsMultipartResolver而不是StandardServletMultipartResolver。我有以下问题:

我尝试为multipartFilter bean设置顺序,但没有帮助。当我调试时,我看到HiddenHttpMethodFilter总是在MultiPartFilter之前调用。我使用的是Spring Boot 1.3.0版和基于Java的配置。如何设置HiddenHttpMethodFilterMultiPartFilter之后的顺序?

@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
    CommonsMultipartResolver resolver = new CommonsMultipartResolver();        
    resolver.setMaxUploadSizePerFile(52428800); 
    return resolver;
}

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

@RequestMapping(value = "/{userId}", method = RequestMethod.POST)
@ResponseBody
public FileTransport create(@PathVariable("userId") Long userId,
        MultipartFile file) throws IOException {
    //return fileService.create(userId, file);
    return new FileTransport();
}

如果修改方法以包含请求参数,如下所示:

@requestParam(name=“file”,required=true)MultipartFile文件

它引发一个异常:“Required MultipartFile参数'file'is not present'”。

如果我使用StandardServletMultipartResolver,那么一切都按预期工作。

共有1个答案

乐正浩博
2023-03-14

在Spring Boot中,要使用CommonsMultipartResolver,您需要通过向配置添加以下注释来禁用MultipartAutoConfiguration:

@EnableAutoConfiguration(exclude={MultipartAutoConfiguration.class})

我的多部分解析程序bean:

 @Bean
 public MultipartResolver multipartResolver() {
     CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
     multipartResolver.setMaxUploadSize(5 * 1024 * 1024);
     return multipartResolver;
 }
 类似资料: