spring boot 配置靜態路徑(404出現的坑)


一  前言

最近有個項目,需要上傳一個zip文件(zip文件就是一堆的html壓縮組成)的壓縮文件,然后后端解壓出來,用戶可以預覽上傳好的文件。

查看資料,spring boot對靜態文件,可以通過配置路徑的方式來實現。

 

@Slf4j
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {

    @Resource
    private PermissionInterceptor permissionInterceptor;

    @Resource
    private CheckOpenInterceptor checkOpenInterceptor;

    @Value("${dataDir}")
    private String rootPath;

    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        log.info(">>addResourceHandlers>>"+"file:"+rootPath);
        registry.addResourceHandler("/file/**").addResourceLocations("file:"+rootPath);

               super.addResourceHandlers(registry);
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(permissionInterceptor).addPathPatterns("/file/**");
        super.addInterceptors(registry);
    }

}

 

rootPath 我本地調試環境的是 : d:/file/

測試環境的是  /data/file

/**” :表示訪問路徑,根據實際情況指定(這里表示/file/下的所有路徑)

"file:/d/file/" :表示靜態資源在硬盤上的真實存儲位置,根據實際情況指定

 

本地開發是很順利的,很快就寫好了,當部署到測試機的時候,上傳的文件,無法預覽,一直提示404。

二  漫長的調試之路

初步懷疑是2個問題

1.權限問題檢查了文件也正常寫入和讀出,排除權限的問題
2文件編碼的問題

我上傳的有中文目錄,也許是中文無法映射出來,后來,上傳了全英文的文件,也是無法預覽,實在是吐血了,

都無法解決我的問題

實在是想不到什么問題,考慮了能否遠程debug下呢

我配置了 ide debug,遠程 java啟動命令

 

java -agentlib:jdwp=transport=dt_socket,address=5555,server=y,suspend=y -jar myproject.jar

 

ide 配置

 

其中 host 是我本地的ip地址

啟動好遠程服務,打好斷點,然后debug

經過幾個小時的spring debug 源碼,終於發現了我的路徑少了個 / 號, spring boot 對於 不是/結尾的處理,直接忽略了,找到了上級目錄去了,這就造成一直404的原因

 

總結

1.開發容易,調試難,一定要注意配置要小心點

2.spring boot 要多熟悉下,有問題,也可以debug來解決

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM