f.u*_*.u. 4 spring file-upload spring-boot
我想在我的Spring Boot应用程序中实现上传处理程序方法.我想用CommonsMultipartResolver而不是StandardServletMultipartResolver.我有以下问题:
我的控制器方法参数(文件)始终设置为null.我在java文档中看到HiddenHttpMethodFilter:
由于需要检查POST body参数,因此在多部分POST请求的情况下,此过滤器需要在多部分处理之后运行.
我试图为multipartFilter bean设置顺序,但它没有帮助.当我调试时,我发现HiddenHttpMethodFilter之前总是调用它MultipartFilter.我使用的是Spring Boot 1.3.0.RELEASE和基于Java的配置.如何设置的顺序 HiddenHttpMethodFilter来之后MultipartFilter?
@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();
}
Run Code Online (Sandbox Code Playgroud)
如果我修改方法以包括如下所示的请求参数:
@RequestParam(name ="file",required = true)MultipartFile文件
它抛出一个异常:'必需的MultipartFile参数'文件'不存在'.
如果我使用StandardServletMultipartResolver,一切都按预期工作.
在Spring Boot中使用CommonsMultipartResolver,您需要通过在配置中添加以下注释来禁用MultipartAutoConfiguration:
@EnableAutoConfiguration(exclude={MultipartAutoConfiguration.class}
Run Code Online (Sandbox Code Playgroud)
我的多部分解析器bean:
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(5 * 1024 * 1024);
return multipartResolver;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5852 次 |
| 最近记录: |