參考
1.https://blog.csdn.net/qq_39159076/article/details/100139260
2.https://blog.csdn.net/weixin_42590334/article/details/96473822
3.https://www.cnblogs.com/zhainan-blog/p/11169163.html
4.https://segmentfault.com/q/1010000019415247
5.https://www.cnblogs.com/zhainan-blog/p/11169163.html(參考)
一、問題點
SpringBoot文件虛擬路徑配置
瀏覽器不允許直接請求本地文件
當你前端的img video或者別的標籤scr屬性類似 src=“E:/video/74af2a01ab2d43539cb815bef4342bb6.mp4”
這樣直接請求本地文件時,
前端多半會出現提示:
Not allowed to load local resource: file:///…
二、解決辦法
解決辦法也很簡單,首先需要配置虛擬路徑,
在你的Springboot項目中新增一個類,代碼如下,
然後,前端請求變成:
src="/video/view/74af2a01ab2d43539cb815bef4342bb6.mp4"
(後端文件上傳的路徑依舊是本地路徑)
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
* 圖片絕對地址與虛擬地址映射
*/
@Configuration
public class URLConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//文件磁盤圖片url 映射
//配置server虛擬路徑,handler爲前臺訪問的目錄,locations爲files相對應的本地路徑
registry.addResourceHandler("/pic/view/**").addResourceLocations("file:///E:/pic/");
registry.addResourceHandler("/video/view/**").addResourceLocations("file:///E:/video/");
super.addResourceHandlers(registry);
}
}
其實這也是springMVC中的基本配置的靜態資源映射,其中addResourceHandler指的是對外暴露的路徑,而addResourceLocations是文件真正放的位置,如:你在src/main/resources下建立assets/js目錄可以這樣寫:
registry.addResourceHandler("/Path/**").addResourceLocations("classpath:/assets");