SpringBoot項(xiàng)目作為文件服務(wù)器配置方式
前言
最近做項(xiàng)目,剛好遇到前段時(shí)間學(xué)的kkfileview,需要實(shí)現(xiàn)文件在線預(yù)覽功能,之前學(xué)習(xí)的時(shí)候采用的nginx部署方式做靜態(tài)資源訪問(wèn),于是這次我打算使用yml方式配置
yml配置
spring:
resources:
static-locations: file:E:/images/, file:E/images_bak/
這里解釋一下,加這個(gè)"file:“是指定系統(tǒng)靜態(tài)資源前綴,不加的話默認(rèn)會(huì)有個(gè)"classpath:”。
webmvc配置
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/file/**")
.addResourceLocations("file:E:/images/")
.addResourceLocations("file:E:/images_bak/")
;
}
}
這里解釋一下,將spring-resources-static-locations下的路徑做映射,
然后在配置類(lèi)中配置registry.addResourceHandler(“/file/**”)
后面訪問(wèn)E:/images/下的0.jpg或者E:/images_bak下的100.jpg,在瀏覽器中都可以通過(guò)http://ip:port/file/0.jpg或者100.jpg訪問(wèn)成功。
這里注意,如果訪問(wèn)資源提示401注意一下,攔截器是否對(duì)/file/**放行
訪問(wèn)文件404問(wèn)題排查
最開(kāi)始我這本地訪問(wèn)404問(wèn)題,檢查yml配置和mvc配置類(lèi),我這發(fā)現(xiàn)的問(wèn)題是少了/,E:/images/最后的/,這里加上之后本地訪問(wèn)正常。
如果不是這里問(wèn)題,檢查其他地方
- 1.url路徑是否正確。
- 2.文件路徑下是否有對(duì)應(yīng)文件
- 3.檢查yml中是否有如下配置:
server:
servlet:
context-path: /app
如果有這個(gè)配置的話,訪問(wèn)路徑得加上前綴,http://ip:port/app/file/0.jpg
部署到服務(wù)器后訪問(wèn)404
這里先貼出服務(wù)器配置
spring:
resources:
static-locations: file:/data/jars/test/plan/, file:/data/jars/test/personinfo/
同理,webmvc的配置類(lèi)也得對(duì)應(yīng)更改。
因?yàn)橹皠偨佑|kkfileview的時(shí)候,出現(xiàn)docker路徑掛載問(wèn)題,我這首先想到的就是路徑掛載,但是我查看啟動(dòng)腳本,personinfo和plan目錄都是做了掛載的,于是排查其他原因
- 1.服務(wù)器端口是否對(duì)外暴露
- 2.云服務(wù)器查看安全組配置
- 3.文件路徑
當(dāng)我檢查了這些之后,仍然不能訪問(wèn),于是我又回到文件路徑掛載的問(wèn)題上,我嘗試對(duì)personinfo和plan的上級(jí)目錄做掛載,重啟容器,url訪問(wèn),訪問(wèn)成功。。。服了我自己了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot中@EnableAutoConfiguration注解的實(shí)現(xiàn)
Spring Boot@EnableAutoConfiguration是一個(gè)強(qiáng)大的工具,可以簡(jiǎn)化配置過(guò)程,從而實(shí)現(xiàn)快速開(kāi)發(fā),本文主要介紹了SpringBoot中@EnableAutoConfiguration注解的實(shí)現(xiàn),感興趣的可以了解一下2024-01-01
在Struts2中如何將父類(lèi)屬性序列化為JSON格式的解決方法
本篇文章,小編將為大家介紹關(guān)于在Struts2中如何將父類(lèi)屬性序列化為JSON格式的解決方法,有需要的朋友可以參考一下2013-04-04
Java微信公眾平臺(tái)開(kāi)發(fā)(7) 公眾平臺(tái)測(cè)試帳號(hào)的申請(qǐng)
這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺(tái)開(kāi)發(fā)第七步,微信公眾平臺(tái)測(cè)試帳號(hào)的申請(qǐng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Java中面向?qū)ο蟮闹R(shí)點(diǎn)總結(jié)
Java是一門(mén)面向?qū)ο蟮恼Z(yǔ)言。對(duì)象是Java程序中的基本實(shí)體。除了對(duì)象之外Java程序同樣處理基本數(shù)據(jù)。下面這篇文章主要給大家總結(jié)了關(guān)于Java中面向?qū)ο蟮闹R(shí)點(diǎn),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-02-02
JAVA實(shí)現(xiàn)基于Tcp協(xié)議的簡(jiǎn)單Socket通信實(shí)例
本篇文章主要介紹了JAVA實(shí)現(xiàn)基于Tcp協(xié)議的簡(jiǎn)單Socket通信實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
Mybatis?sqlMapConfig.xml中的mappers標(biāo)簽使用
這篇文章主要介紹了Mybatis?sqlMapConfig.xml中的mappers標(biāo)簽使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。2022-01-01

