SpringBoot 項(xiàng)目中的圖片處理策略之本地存儲(chǔ)與路徑映射
一、前言
在做網(wǎng)頁(yè)的時(shí)候,會(huì)經(jīng)常遇到一個(gè)問(wèn)題,那就是如何在前端訪問(wèn)圖片,還有就是圖片應(yīng)該如何存?存在數(shù)據(jù)庫(kù),然后直接把文件發(fā)給前端?數(shù)據(jù)庫(kù)表示:“哥們你可真行,我快裝不下了”。比較好一點(diǎn)的做法就是把圖片存在本地*(ps:這里不考慮云存儲(chǔ))*,然后數(shù)據(jù)庫(kù)存該文件的路徑。這樣一來(lái)前端如何訪問(wèn)這個(gè)文件呢?我們都知道在SpringBoot
項(xiàng)目中,靜態(tài)資源都存放在static
目錄下,使得前端可以通過(guò)URL
來(lái)訪問(wèn)這些資源,現(xiàn)在我們就需要將文件系統(tǒng)的文件路徑與 URL
建立一個(gè)映射關(guān)系,把文件系統(tǒng)中的文件當(dāng)成我們的靜態(tài)資源即可。下面開(kāi)始演示:
二、演示
本篇的重點(diǎn)是如何通過(guò) URL 來(lái)訪問(wèn)服務(wù)器的文件系統(tǒng)中的文件,這里就不使用數(shù)據(jù)庫(kù)了。
- 我們創(chuàng)建一個(gè)
SpringBoot
項(xiàng)目,依賴如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
- 在
static
目錄下,我們可以直接通過(guò)URL
來(lái)訪問(wèn),該目錄下有一個(gè)/image/avatar.png
文件
我們現(xiàn)在的目標(biāo)是:假設(shè)在D/image
目錄下有一個(gè)圖片,如何直接通過(guò)URL
來(lái)訪問(wèn)本地文件呢?
- 在
application.properties
配置文件中定義圖片存放的位置
# 圖片保存路勁 imagepath=D:/image/
- 創(chuàng)建一個(gè)類實(shí)現(xiàn)
WebMvcConfigurer
接口并重寫addResourceHandlers
方法。
@Configuration public class InterceptorConfig implements WebMvcConfigurer { @Value("${imagepath}") private String imagePath;//從配置文件中獲取文件路徑 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/image/**") .addResourceLocations("file:" + imagePath); } }
addResourceHandler("/image/**")
:定義了一個(gè)URL模式,即以"/image/"
開(kāi)頭的請(qǐng)求路徑。任何匹配該模式的請(qǐng)求都將被映射到相應(yīng)的靜態(tài)資源。.addResourceLocations("file:" + imagepath)
:指定了實(shí)際存儲(chǔ)靜態(tài)資源的文件系統(tǒng)路徑,"file:"
前綴告訴Spring MVC
,這是一個(gè)文件系統(tǒng)路徑。- 這段代碼的作用是告訴
Spring MVC
,當(dāng)接收到以"/image/"
開(kāi)頭的請(qǐng)求時(shí),去指定的文件系統(tǒng)路徑imagepath
(D/image/)查找對(duì)應(yīng)的靜態(tài)資源。例如:當(dāng)請(qǐng)求"/image/test.jpg"
時(shí),Spring MVC
將會(huì)嘗試在"D/image/"
目錄下查找并返回"test.jpg"
這個(gè)文件作為響應(yīng)。
- 在
"D/image/"
下保存一個(gè)圖片
- 訪問(wèn)
http://localhost:8080/image/test.png
可以看到映射成功了,其實(shí)在數(shù)據(jù)庫(kù)中存的就是"/image/"+imageName
。如果你要將項(xiàng)目部署到Linux
服務(wù)器上,需要把文件目錄修改成Linux
系統(tǒng)的,比如:
imagepath=/root/soft/images/
到此這篇關(guān)于SpringBoot 項(xiàng)目中的圖片處理策略:本地存儲(chǔ)與路徑映射的文章就介紹到這了,更多相關(guān)SpringBoot 本地存儲(chǔ)與路徑映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Java多態(tài)對(duì)象的類型轉(zhuǎn)換與動(dòng)態(tài)綁定
這篇文章主要介紹了詳解Java多態(tài)對(duì)象的類型轉(zhuǎn)換與動(dòng)態(tài)綁定,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09SpringBoot基于Redis實(shí)現(xiàn)短信登錄的操作
驗(yàn)證碼登錄是非常常見(jiàn)的一種登錄方式,能夠簡(jiǎn)化用戶登錄的過(guò)程,本文主要介紹了SpringBoot基于Redis實(shí)現(xiàn)短信登錄的操作,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12SpringBoot整合Mybatis-plus關(guān)鍵詞模糊查詢結(jié)果為空
SpringBoot整合Mybatis-plus使用關(guān)鍵詞模糊查詢的時(shí)候,數(shù)據(jù)庫(kù)中有數(shù)據(jù),但是無(wú)法查找出來(lái),本文就來(lái)介紹一下SpringBoot整合Mybatis-plus關(guān)鍵詞模糊查詢結(jié)果為空的解決方法2025-04-04Java虛擬機(jī)調(diào)用Java主類的main()方法
這篇文章主要介紹了Java虛擬機(jī)調(diào)用Java主類的main()方法,前一篇文章我們介紹了關(guān)于Java虛擬機(jī)HotSpot2021-11-11全排列算法-遞歸與字典序的實(shí)現(xiàn)方法(Java)
下面小編就為大家?guī)?lái)一篇全排列算法-遞歸與字典序的實(shí)現(xiàn)方法(Java) 。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04EasyUi+Spring Data 實(shí)現(xiàn)按條件分頁(yè)查詢的實(shí)例代碼
這篇文章主要介紹了EasyUi+Spring Data 實(shí)現(xiàn)按條件分頁(yè)查詢的實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-07-07