基于Springboot2.3訪問(wèn)本地路徑下靜態(tài)資源的方法(解決報(bào)錯(cuò):Not allowed to load local resource)
最近在做的一個(gè)項(xiàng)目中有一個(gè)比較奇葩的需求:
要在springboot中,上傳本地的圖片進(jìn)行展示
我的第一反應(yīng)是,直接在數(shù)據(jù)庫(kù)字段加一個(gè)存儲(chǔ)本地路徑的字段,然后用thymeleaf的th:src渲染到前端就好了嘛!
理想很豐滿,但現(xiàn)實(shí)卻很骨感~
前端報(bào)了這樣的錯(cuò)誤Not allowed to load local resource

于是我想到了可以使用IO將圖片先上傳到static/images目錄下,這樣就不會(huì)出現(xiàn)禁止訪問(wèn)本地路徑的問(wèn)題了
但是這樣實(shí)現(xiàn),問(wèn)題又來(lái)了:上傳后的圖片必須重啟springboot,才能進(jìn)行展示,否則無(wú)法加載
這個(gè)應(yīng)該是因?yàn)閟pringboot在初始化時(shí)加載靜態(tài)資源,運(yùn)行時(shí)導(dǎo)入的資源只能在再次初始化時(shí)加載
于是,我苦思冥想,查閱了多方資料,終于使用本地虛擬路徑的方式,解決了這個(gè)問(wèn)題
正片開(kāi)始:
1.首先配置一個(gè)配置類
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyConfigurer implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/image/**").addResourceLocations("file:E:/vote_images/");
}
}
addResourceHandler是指你設(shè)置的虛擬路徑,前端展示頁(yè)面時(shí)填入這個(gè)路徑來(lái)進(jìn)行訪問(wèn)
addResourceLocations是指實(shí)際的本地路徑,你需要代理給虛擬路徑來(lái)訪問(wèn)的路徑
2. IO實(shí)現(xiàn)文件上傳
//如果文件夾不存在,創(chuàng)建文件夾
File file=new File("E:\\vote_images");
if(!file.exists()){
file.mkdir();
}
//文件的上傳
try (InputStream input = new FileInputStream(new File(judge));
OutputStream output = new FileOutputStream("E:\\vote_images\\" + num + ".jpg")
) {
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) != -1) {
output.write(buf, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
}
//設(shè)置路徑字段
o.setPath("\\image\\" + (num++) + ".jpg");
//增加數(shù)據(jù)
optionsService.insert(o);
3.前端渲染頁(yè)面
<img height="150px" width="225px" th:src="@{${opt.getPath()}}">
這樣就成功實(shí)現(xiàn)需求啦
到此這篇關(guān)于基于Springboot2.3訪問(wèn)本地路徑下靜態(tài)資源的方法的文章就介紹到這了,更多相關(guān)Springboot2.3訪問(wèn)本地靜態(tài)資源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Swing組件布局管理器之FlowLayout(流式布局)入門教程
這篇文章主要介紹了Java Swing組件布局管理器之FlowLayout(流式布局),結(jié)合實(shí)例形式分析了Swing組件布局管理器FlowLayout流式布局的常用方法及相關(guān)使用技巧,需要的朋友可以參考下2017-11-11
Jmeter正則表達(dá)式提取器實(shí)現(xiàn)過(guò)程圖解
這篇文章主要介紹了Jmeter正則表達(dá)式提取器實(shí)現(xiàn)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
java對(duì)接支付寶支付接口開(kāi)發(fā)詳細(xì)步驟
本文主要介紹了java對(duì)接支付寶支付接口開(kāi)發(fā)詳細(xì)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
GC調(diào)優(yōu)實(shí)戰(zhàn)之高分配速率High?Allocation?Rate
這篇文章主要為大家介紹了GC調(diào)優(yōu)之高分配速率High?Allocation?Rate的實(shí)戰(zhàn)示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-01-01
Spring?Security自定義登錄頁(yè)面認(rèn)證過(guò)程常用配置
這篇文章主要為大家介紹了Spring?Security自定義登錄頁(yè)面認(rèn)證過(guò)程常用配置示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
探討:使用httpClient在客戶端與服務(wù)器端傳輸對(duì)象參數(shù)的詳解
本篇文章是對(duì)使用httpClient在客戶端與服務(wù)器端傳輸對(duì)象參數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

