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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM