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。 

推薦閱讀: