SpringBoot實現(xiàn)接受文件和對象
更新時間:2025年12月06日 09:36:30 作者:LitongZero
SpringBoot中接受文件和對象的場景,推薦使用`multipart/form-data`格式,后端可以通過接受實體并將文件放入對象屬性中來處理數(shù)據(jù),使用`@Validated`注解進行參數(shù)校驗是可行的,但要注意不要與`@RequestBody`注解同時使用
SpringBoot接受文件和對象
使用場景
某個接口,需要同時接受文件和實體,也就是參數(shù)。
- 這個時候,前端就不能json格式傳送數(shù)據(jù)了,要用到multipart/form-data;這種格式傳送數(shù)據(jù)。
- 那么,這個時候,后端應(yīng)該怎樣接受這個參數(shù)和文件呢?
1.接受HttpServletRequest,自己處理request(不推薦)
@PostMapping(value = "/upload")
@ResponseBody
public String handleFileUpload(HttpServletRequest request) {
MultipartHttpServletRequest params=((MultipartHttpServletRequest) request);
// 獲取文件
List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file");
// 獲取參數(shù)
String name=params.getParameter("name");
2.接受實體,將文件放到對象屬性中(推薦)
public class UserFileReq {
// 參數(shù)
private String username;
// 文件
private MultipartFile file;
// 省略get\set
}
@PostMapping(value = "/upload")
@ResponseBody
public String handleFileUpload(UserFileReq req) {
// 文件和參數(shù) 都在實體中了
}
3.接受參數(shù),將文件放到接受參數(shù)中
這種方法適合接受單個文件參數(shù),多參數(shù)還是建議用對象接受,方便擴展
@PostMapping(value = "/upload")
@ResponseBody
public String handleFileUpload(MultipartFile file) {
}
4.一個坑
使用第二種方法的時候,一定不要加@RequestBody,加了這個注解,就會報如下錯誤。
{
"timestamp": 1571196217195,
"status": 415,
"error": "Unsupported Media Type",
"exception": "org.springframework.web.HttpMediaTypeNotSupportedException",
"message": "Content type 'multipart/form-data;boundary=2gOOYeFBpE;charset=UTF-8' not supported",
"path": "/file/upload"
}
所以,接受文件,不要使用@RequestBody注解
但是@Validated注解(校驗參數(shù)的注解)是可以使用的。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- springboot項目controller統(tǒng)一返回對象格式以及全局自定義異常方式
- Springboot上傳文件的同時傳遞參數(shù)用對象接收的問題及解決方案
- 淺析如何在SpringBoot上傳中將MultipartFile轉(zhuǎn)File對象
- SpringBoot實現(xiàn)數(shù)據(jù)轉(zhuǎn)換的四種對象映射方案
- SpringBoot項目中Redis存儲Session對象序列化處理
- SpringBoot實現(xiàn)導(dǎo)出復(fù)雜對象到Excel文件
- Springboot控制反轉(zhuǎn)與Bean對象的方法
- springboot批量接收對象參數(shù),接收List方式
相關(guān)文章
Java實現(xiàn)企業(yè)員工管理系統(tǒng)
這篇文章主要為大家詳細介紹了Java實現(xiàn)企業(yè)員工管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
JavaSwing實現(xiàn)小型學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細介紹了JavaSwing實現(xiàn)小型學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
基于Java開發(fā)一個Markdown到Word文檔轉(zhuǎn)換工具
本文介紹了一個用Java開發(fā)的Markdown到Word文檔轉(zhuǎn)換工具,該工具通過MarkdownToWordConverter類實現(xiàn),利用flexmark庫將Markdown內(nèi)容轉(zhuǎn)換為HTML,借助jsoup庫規(guī)范化HTML,再通過docx4j庫將處理后的HTML導(dǎo)入并保存為Word文檔,需要的朋友可以參考下2025-07-07

