SpringBoot本地磁盤映射問題
SpringBoot本地磁盤映射
出於安全性考慮,SpringBoot無法直接訪問本地磁盤的文件。在某些應用場景下,需要訪問例如本地的圖片等一些內容。這時候,我們可以通過創建一個虛擬路徑來指向本地磁盤文件。
重寫WEB配置類,添加新的靜態資源路徑配置。
代碼如下:
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/watch/**").addResourceLocations("file:C://img/"); } }
這種方法相當於增加靜態資源路徑。SpringBoot本身自帶的靜態資源路徑並不會被替代。
SpringBoot 本地磁盤路徑映射遇到的坑
今天學習瞭Springboot的磁盤映射,也就是將電腦上的D盤作為靜態資源讓用戶可以通過IP或外網地址訪問到,網上大多說的是繼承 WebMvcConfigurerAdapter 但這個方法已經過時瞭,網上又有好多人說實現WebMvcConfigurer幾口或者繼承另一個類(忘瞭是啥瞭),我用的是實現WebMvcConfigurer,剛開始不知道怎麼寫,具體實現那個方法,就去網上查最後結果如下
@Configuration public class WebMvcConfig implements WebMvcConfigurer { public void addResourceHandlers(ResourceHandlerRegistry registry){ registry.addResourceHandler("/**").addResourceLocations("D:\\"); WebMvcConfigurer.super.addResourceHandlers(registry); } }
這樣死活訪問不到頁面一直報錯404,糾結瞭一上午,偶然找到瞭一篇文章,上面是這樣寫的:
@Configuration public class WebMvcConfig implements WebMvcConfigurer { public void addResourceHandlers(ResourceHandlerRegistry registry){ registry.addResourceHandler("/**").addResourceLocations("file:D:\\"); WebMvcConfigurer.super.addResourceHandlers(registry); } }
復制過來之後,神奇的能訪問到資源瞭,可能是由於視覺受IDEA方法屬性的提示影響還是怎麼著,一直以為file:是編輯軟件的提示不用加,導致後來@value取值時以為取不到呢!現在記錄下來預防自己以後再忘瞭
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Value("${url.diskUrl}") private String diskUrl; public void addResourceHandlers(ResourceHandlerRegistry registry){ registry.addResourceHandler("/**").addResourceLocations(diskUrl); WebMvcConfigurer.super.addResourceHandlers(registry); } }
配置文件
url: diskUrl: file:D:\ webUrl: http://localhost:8080/
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 使用springboot訪問圖片本地路徑並映射成url
- SpringBoot重寫addResourceHandlers映射文件路徑方式
- springboot如何通過URL方式訪問外部資源
- Springboot配置圖片虛擬映射示例代碼
- Java超詳細講解WebMvcConfigurer攔截器