1. 起因(前提:前端采用formData传输,如用json传输则下面的方法也不适用)
后端在插入一条数据时涉及到同时接收表单项和图片信息(不止一个图片)
2. 解决方案
2.1 接收一个图片和表单项
@PostMapping("/upTaskInfo") public Result upTaskInfo(Person person, @RequestParam("file") MultipartFile file){
}
2.2 接收多个文件和表单项
@PostMapping("/upTaskInfo") public Result upTaskInfo(Person person,@RequestParam("files") MultipartFile[] files){ }
3. 错误示例(同时写上 @RequestBody 和 MultipartFile)
@PostMapping("/upTaskInfo") public Result upTaskInfo(@RequestBody Person person,@RequestParam("files") MultipartFile[] files){ }
去掉 @RequestBody 就行了!!!!,不需要加上
去掉 @RequestBody 就行了!!!!,不需要加上
4. 产生的原因
http相关知识
HTTP请求分为了消息头和消息体,头信息里面的Content-Type字段定义了消息体的请求格式,接口里面声明 @RequestBody 的参数只能设置为 "Content-Type: application/json",而 MultipartFile 参数只能设置为"Content-Type: multipart/form-data",上述两种格式并不是兼容的,那问题就来了,前端请求的时候 Content-Type 怎么设置,无论哪种格式都是错的。
总算知道前因后果了,我这也是多篇博客参考汇总的原因的好一点的解决方法,,另外也可以将实体类一个个写(略显冗杂就没列举)
参考博客链接:
原因+(提出了表单量小的解决方法):SpringBoot 接口同时接收MultipartFile参数和结构体参数_清泉影月-CSDN博客_springboot接收文件和参数