spring?boot實(shí)現(xiàn)圖片上傳到后臺的功能(瀏覽器可直接訪問)
1. 配置上傳文件最大數(shù)值
默認(rèn)情況下,在spring boot嵌入的tomcat限制了上傳文件的大小,在spring boot的我官方文檔中說明,每個(gè)文件的最大配置為1Mb,單次請求的總文件數(shù)不能大于10Mb。
這意味著如果你上傳的圖片大于1Mb,會被攔截下來,無法正常保存到后臺,并拋出一個(gè)錯誤,返回狀態(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: 100MB
2. 配置虛擬路徑映射
后端程序接收到圖片資源后,會將圖片保存到硬盤中的一個(gè)路徑下,如果我們想通過URL直接訪問到圖片資源,就需要配置一個(gè)虛擬路徑去映射這個(gè)真實(shí)存在的物理路徑。
同樣是在配置文件中,添加物理存儲路徑以及映射到項(xiàng)目中的虛擬路徑。
SavePath: ProfilePhoto: 'D:\Test\ProfilePhoto\' #圖標(biāo)存儲路徑 ProfilePhotoMapper: '/profilePhoto/' #圖標(biāo)的映射路徑
添加一個(gè)spring boot配置程序,這樣就形成了一對映射關(guān)系。
@Configuration public class SpringbootConfigure implements WebMvcConfigurer { //@Value可以將配置文件的內(nèi)容自動注入到屬性內(nèi) @Value("${SavePath.ProfilePhoto}") private String ProfilePhotoPath; //圖標(biāo)物理存儲路徑 @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)圖片存儲路徑 @Value("${SavePath.ProfilePhotoMapper}") private String ProfilePhotoMapperPath; //圖標(biāo)映射路徑 /** * 頭像上傳 * @param fileUpload 圖片資源 * @return 圖映射的虛擬訪問路徑 */ @PostMapping("/api/profilePhotoUpload") public String profilePhotoUpload(@RequestParam("file") MultipartFile fileUpload){ //獲取文件名 String fileName = fileUpload.getOriginalFilename(); //獲取文件后綴名。也可以在這里添加判斷語句,規(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. 測試
上傳圖片有很多種方式,比如自行寫一段html,也可以使用idea自帶的http client工具
我這里使用apifox
工具進(jìn)行測試.
數(shù)據(jù)類型使用form-data,參數(shù)寫"file",這個(gè)參數(shù)要與controller程序中寫的請求參數(shù)一致。參數(shù)類型選擇file,即文件上傳。
運(yùn)行接口測試,點(diǎn)擊apifox自帶的upload按鈕,選擇一個(gè)圖片上傳。
請求成功后,接收到回應(yīng)信息中的圖像映射路徑。
打開配置的存儲路徑,可以看到圖片已經(jīng)被保存。
測試url請求。注意這里的程序只響應(yīng)出了項(xiàng)目訪問路徑的可變部分,使用時(shí)需要與項(xiàng)目路徑的固定訪問路徑進(jìn)行拼接,也可以修改程序一并返回。
測試訪問成功??!
到此這篇關(guān)于spring boot實(shí)現(xiàn)圖片上傳到后臺的功能(瀏覽器可直接訪問)的文章就介紹到這了,更多相關(guān)spring boot圖片上傳到后臺內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用@PathVariable注解如何實(shí)現(xiàn)動態(tài)傳值
這篇文章主要介紹了使用@PathVariable注解如何實(shí)現(xiàn)動態(tài)傳值,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10postman?如何實(shí)現(xiàn)傳遞?ArrayList?給后臺
這篇文章主要介紹了postman?如何實(shí)現(xiàn)傳遞?ArrayList給后臺,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12Java Redis Template批量查詢指定鍵值對的實(shí)現(xiàn)
本文主要介紹了Java Redis Template批量查詢指定鍵值對的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Java向數(shù)據(jù)庫中插入數(shù)據(jù)后獲取自增ID的常用方法
有時(shí)候因?yàn)樾略龅男枨笮枰@取剛剛新增的數(shù)據(jù)的自增的主鍵ID,下面這篇文章主要給大家介紹了關(guān)于Java向數(shù)據(jù)庫中插入數(shù)據(jù)后獲取自增ID的常用方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11