zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    第四次课堂作业
    12周课后作业
    12周上机(5.21)
    11周周五课后作业
    11周上机作业(5.14)
    第十周(5.7)上机
    第九周4.30上机作业
    第八周周五课后作业
    4.23 第八周上机作业
    4.17课后作业
  • 原文地址:https://www.cnblogs.com/cybg/p/15268500.html
Copyright © 2011-2022 走看看