求助:SpringBoot 2.0.3中@RequestParam与MultipartFile共存参数重复问题
Spring Boot 2.0.3.RELEASE Multipart请求中非文件@RequestParam参数值重复问题
我在使用Spring Boot 2.0.3.RELEASE开发控制器时遇到了一个奇怪的Multipart请求参数异常,下面是问题的详细情况:
问题现象
当发送包含空格的label参数的POST请求(Multipart类型)到控制器时,后端Spring处理后,除MultipartFile之外的@RequestParam参数值出现了重复的情况。但只要移除控制器方法中的MultipartFile参数,这个异常现象就会消失。
环境配置
- 使用的Spring Boot版本:
2.0.3.RELEASE - pom.xml中的父依赖配置如下:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
控制器代码
对应的控制器实现代码:
@Controller @RequestMapping("/route") @Slf4j public class Api { @PostMapping public ResponseEntity<Void> createFromCsv(@RequestParam("label") String label, @RequestParam MultipartFile csvFile) { log.debug("label {}", label); return new ResponseEntity<>(HttpStatus.OK); } }
排查更新
后续通过分析HttpServletRequest发现,控制器方法签名中的额外@RequestParam参数会被存入requestMultipartParam中,并且参数值确实存在重复的情况。
内容的提问来源于stack exchange,提问作者ad3luc
相关产品推荐
相关产品推荐

