gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:34:07 31 4
gpt4 key购买 nike

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

我的 Controller 方法参数(文件)始终设置为空。我在HiddenHttpMethodFilter的java文档中看到:由于其固有的需要检查 POST 正文参数,因此在多部分 POST 请求的情况下,此过滤器需要在多部分处理后运行。

我尝试设置 multipartFilter bean 的顺序,但没有帮助。当我调试时,我发现 HiddenHttpMethodFilter 总是在 MultipartFilter 之前调用。我正在使用 Spring Boot 版本 1.3.0.RELEASE 和基于 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 文件

它抛出异常:“所需的 MultipartFile 参数‘文件’不存在”。

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

最佳答案

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

@EnableAutoConfiguration(exclude={MultipartAutoConfiguration.class})

我的多部分解析器 bean:

 @Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(5 * 1024 * 1024);
return multipartResolver;
}

关于spring - 当我在 Spring Boot 应用程序中使用 CommonsMultipartResolver 时,MultipartFile 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37951569/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com