人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

springBoot 同时接收表单数据(后端以实体类的形式接收) 和 文件

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接收文件和参数

表单量大的解决方法springboot同时接收表单数据和文件 - 风子磊 - 博客园 (cnblogs.com)

posted @ 2021-09-14 17:06  宇~  阅读(9195)  评论(1编辑  收藏  举报