Springboot接口如何接收多個(gè)文件以及如何將其保存到服務(wù)器
一.接收多個(gè)文件(即接收文件List)
1.核心思路:使用post請(qǐng)求、List<MultipartFile>,就可以接收文件list
2.代碼編寫
@Api(tags = "測(cè)試接口")
@RestController
@RequestMapping("/test")
public class TestController {
@PostMapping("/hello")
public String hello(@RequestParam("files") List<MultipartFile> files) {
if(files == null || files.isEmpty()){
return "請(qǐng)選擇至少一個(gè)文件";
}
for(MultipartFile file : files){
if(!file.isEmpty()){
//獲取文件名
String originalFilename = file.getOriginalFilename();
//獲取文件大小(單位是B,即Byte字節(jié))
long fileSize = file.getSize();
//獲取文件類型
String fileType = file.getContentType();
//日志輸出到控制臺(tái)
System.out.println("成功接收文件:"+ originalFilename +",文件大小為:"+fileSize+",文件類型為:"+fileType);
}
}
return "成功接收"+files.size()+"個(gè)文件!";
}
}3.使用apifox發(fā)送請(qǐng)求該接口,傳入多個(gè)文件
如下圖,我們要注意幾點(diǎn):
- 要發(fā)送post請(qǐng)求
- 參數(shù)要選擇Body->form-data

①思考:為什么發(fā)送文件,請(qǐng)求類型一定要選擇Post?傳參一定要選擇Body->form-data?
- 由于文件只能放到Body中,而Get請(qǐng)求不支持Body傳參,所以只能使用Post請(qǐng)求
- 由于文件上傳必須使用
multipart/form-data編碼格式,這是 HTTP/1.1 協(xié)議(RFC 7578)規(guī)定的標(biāo)準(zhǔn)方式。所以傳文件時(shí),參數(shù)要選擇Body->form-data
②報(bào)錯(cuò)原因分析:Maximum upload size exceeded(超過(guò)最大上傳限制)
上傳文件list的場(chǎng)景中,Spring Boot默認(rèn)值為:
- 單個(gè)文件的大小上限:1MB
- 單次請(qǐng)求的文件總大小上限:10MB




這是我們上述傳的四個(gè)文件,可見此時(shí)該次請(qǐng)求的總文件大小也就3~4MB,沒(méi)問(wèn)題符合要求,但是“雙錄測(cè)試視頻.mp4”這個(gè)文件,超出了單個(gè)文件大小上限(1MB)。因此我們要設(shè)置一下這個(gè)上限,調(diào)大點(diǎn)。
4.配置:調(diào)整上傳文件的大小限制
如下圖,我們此時(shí)提高了文件大小的上限:
- 單個(gè)文件大小的上限提升至20MB
- 單次請(qǐng)求的文件總大小上限提升至50MB

5.再次使用apifox發(fā)送請(qǐng)求,傳入多個(gè)文件

可以去控制臺(tái),查看一下上傳的日志:

注意:file.getSize()這個(gè)方法,獲取的文件大小的單位是Byte(即字節(jié))。
二.將接收的文件,保存到本地/服務(wù)器
1.添加如下圖的兩段代碼

2.使用apifox,發(fā)送請(qǐng)求,測(cè)試一下

3.查看本機(jī)的指定目錄,是否多出了這四個(gè)文件

以上就是本篇文章的全部?jī)?nèi)容,喜歡的話可以留個(gè)免費(fèi)的關(guān)注呦~~~
到此這篇關(guān)于Springboot接口如何接收多個(gè)文件以及如何將其保存到服務(wù)器的文章就介紹到這了,更多相關(guān)springboot接收多個(gè)文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Springboot接收文件報(bào)錯(cuò)Required request part‘file‘is not present問(wèn)題分析及解決
- SpringBoot controller接收txt文本文件實(shí)現(xiàn)方式
- Springboot上傳文件的同時(shí)傳遞參數(shù)用對(duì)象接收的問(wèn)題及解決方案
- springboot如何接收復(fù)雜參數(shù)(同時(shí)接收J(rèn)SON與文件)
- springboot接收excel數(shù)據(jù)文件去重方式
- 在springboot項(xiàng)目中同時(shí)接收文件和多個(gè)參數(shù)的方法總結(jié)
- Springboot接收文件與發(fā)送文件實(shí)例教程
- 用SpringBoot框架來(lái)接收multipart/form-data文件方式
- SpringBoot文件上傳同時(shí)接收復(fù)雜參數(shù)的過(guò)程詳解
- SpringBoot中實(shí)現(xiàn)接收文件和對(duì)象
相關(guān)文章
WebFlux 服務(wù)編排使用優(yōu)勢(shì)詳解
這篇文章主要為大家介紹了WebFlux 服務(wù)編排使用優(yōu)勢(shì)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
java中重寫equals()方法的同時(shí)要重寫hashcode()方法(詳解)
下面小編就為大家?guī)?lái)一篇java中重寫equals()方法的同時(shí)要重寫hashcode()方法(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
System.currentTimeMillis()計(jì)算方式與時(shí)間的單位轉(zhuǎn)換詳解
這篇文章主要介紹了System.currentTimeMillis()計(jì)算方式與時(shí)間的單位轉(zhuǎn)換詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Java中類轉(zhuǎn)json的基類實(shí)現(xiàn)
這篇文章主要介紹了Java中類轉(zhuǎn)json的基類實(shí)現(xiàn),需要的朋友可以參考下2021-01-01
MyBatis代理Dao方式的增刪改查的實(shí)現(xiàn)小結(jié)
本文主要介紹了MyBatis代理Dao方式的增刪改查的實(shí)現(xiàn)小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-11-11
我用java實(shí)現(xiàn)了王者榮耀的皮膚和英雄技能
上篇文章主要實(shí)現(xiàn)了創(chuàng)建英雄,創(chuàng)建野怪,創(chuàng)建裝備.并且實(shí)現(xiàn)了簡(jiǎn)單的刷怪,購(gòu)買裝備等.本篇文章我優(yōu)化了我的操作界面,并且實(shí)現(xiàn)了英雄技能,英雄皮膚等,需要的朋友可以參考下2021-05-05
14個(gè)編寫Spring MVC控制器的實(shí)用小技巧(吐血整理)
這篇文章主要介紹了14個(gè)編寫Spring MVC控制器的實(shí)用小技巧(吐血整理),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
深度優(yōu)先與廣度優(yōu)先Java實(shí)現(xiàn)代碼示例
這篇文章主要介紹了深度優(yōu)先與廣度優(yōu)先Java實(shí)現(xiàn)代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12

