spring?boot實(shí)現(xiàn)圖片上傳到后臺(tái)的功能(瀏覽器可直接訪問(wèn))
1. 配置上傳文件最大數(shù)值
默認(rèn)情況下,在spring boot嵌入的tomcat限制了上傳文件的大小,在spring boot的我官方文檔中說(shuō)明,每個(gè)文件的最大配置為1Mb,單次請(qǐng)求的總文件數(shù)不能大于10Mb。
這意味著如果你上傳的圖片大于1Mb,會(huì)被攔截下來(lái),無(wú)法正常保存到后臺(tái),并拋出一個(gè)錯(cuò)誤,返回狀態(tài)碼:500。
The field file exceeds its maximum permitted size of 1048576 bytes.
需要根據(jù)實(shí)際情況更改這兩個(gè)數(shù)值。(yaml配置文件)
spring:
servlet:
multipart:
enabled: true
max-file-size: 10MB
max-request-size: 100MB2. 配置虛擬路徑映射
后端程序接收到圖片資源后,會(huì)將圖片保存到硬盤中的一個(gè)路徑下,如果我們想通過(guò)URL直接訪問(wèn)到圖片資源,就需要配置一個(gè)虛擬路徑去映射這個(gè)真實(shí)存在的物理路徑。
同樣是在配置文件中,添加物理存儲(chǔ)路徑以及映射到項(xiàng)目中的虛擬路徑。
SavePath: ProfilePhoto: 'D:\Test\ProfilePhoto\' #圖標(biāo)存儲(chǔ)路徑 ProfilePhotoMapper: '/profilePhoto/' #圖標(biāo)的映射路徑
添加一個(gè)spring boot配置程序,這樣就形成了一對(duì)映射關(guān)系。
@Configuration
public class SpringbootConfigure implements WebMvcConfigurer {
//@Value可以將配置文件的內(nèi)容自動(dòng)注入到屬性內(nèi)
@Value("${SavePath.ProfilePhoto}")
private String ProfilePhotoPath; //圖標(biāo)物理存儲(chǔ)路徑
@Value("${SavePath.ProfilePhotoMapper}")
private String ProfilePhotoMapperPath; //圖標(biāo)映射路徑
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry){
registry.addResourceHandler(ProfilePhotoMapperPath+"**").addResourceLocations("file:"+ProfilePhotoPath);
}
}3. 編寫controller程序
作示例使用,具體的返回?cái)?shù)據(jù)自行改寫。
@Value("${SavePath.ProfilePhoto}")
private String ProfilePhotoSavePath; //圖標(biāo)圖片存儲(chǔ)路徑
@Value("${SavePath.ProfilePhotoMapper}")
private String ProfilePhotoMapperPath; //圖標(biāo)映射路徑
/**
* 頭像上傳
* @param fileUpload 圖片資源
* @return 圖映射的虛擬訪問(wèn)路徑
*/
@PostMapping("/api/profilePhotoUpload")
public String profilePhotoUpload(@RequestParam("file") MultipartFile fileUpload){
//獲取文件名
String fileName = fileUpload.getOriginalFilename();
//獲取文件后綴名。也可以在這里添加判斷語(yǔ)句,規(guī)定特定格式的圖片才能上傳,否則拒絕保存。
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//為了避免發(fā)生圖片替換,這里使用了文件名重新生成
fileName = UUID.randomUUID()+suffixName;
try {
//將圖片保存到文件夾里
fileUpload.transferTo(new File(ProfilePhotoSavePath+fileName));
return ProfilePhotoMapperPath+fileName;
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
4. 測(cè)試
上傳圖片有很多種方式,比如自行寫一段html,也可以使用idea自帶的http client工具

我這里使用apifox工具進(jìn)行測(cè)試.
數(shù)據(jù)類型使用form-data,參數(shù)寫"file",這個(gè)參數(shù)要與controller程序中寫的請(qǐng)求參數(shù)一致。參數(shù)類型選擇file,即文件上傳。

運(yùn)行接口測(cè)試,點(diǎn)擊apifox自帶的upload按鈕,選擇一個(gè)圖片上傳。

請(qǐng)求成功后,接收到回應(yīng)信息中的圖像映射路徑。

打開(kāi)配置的存儲(chǔ)路徑,可以看到圖片已經(jīng)被保存。

測(cè)試url請(qǐng)求。注意這里的程序只響應(yīng)出了項(xiàng)目訪問(wèn)路徑的可變部分,使用時(shí)需要與項(xiàng)目路徑的固定訪問(wèn)路徑進(jìn)行拼接,也可以修改程序一并返回。
測(cè)試訪問(wèn)成功!!

到此這篇關(guān)于spring boot實(shí)現(xiàn)圖片上傳到后臺(tái)的功能(瀏覽器可直接訪問(wèn))的文章就介紹到這了,更多相關(guān)spring boot圖片上傳到后臺(tái)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用@PathVariable注解如何實(shí)現(xiàn)動(dòng)態(tài)傳值
這篇文章主要介紹了使用@PathVariable注解如何實(shí)現(xiàn)動(dòng)態(tài)傳值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
postman?如何實(shí)現(xiàn)傳遞?ArrayList?給后臺(tái)
這篇文章主要介紹了postman?如何實(shí)現(xiàn)傳遞?ArrayList給后臺(tái),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
Java Redis Template批量查詢指定鍵值對(duì)的實(shí)現(xiàn)
本文主要介紹了Java Redis Template批量查詢指定鍵值對(duì)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Spring注解配置實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了Spring注解配置實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Java向數(shù)據(jù)庫(kù)中插入數(shù)據(jù)后獲取自增ID的常用方法
有時(shí)候因?yàn)樾略龅男枨笮枰@取剛剛新增的數(shù)據(jù)的自增的主鍵ID,下面這篇文章主要給大家介紹了關(guān)于Java向數(shù)據(jù)庫(kù)中插入數(shù)據(jù)后獲取自增ID的常用方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11

