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接收文件和參數