天天看點

Spring Boot下載下傳檔案

SpringBoot下載下傳檔案

前幾天項目有需求, 需要下載下傳項目中生成的csv檔案, 雖然之前也做過下載下傳檔案, 類似的流程也明白, 但是當時使用的spring + springmvc的項目, 而且伺服器使用的tomcat, 現在項目使用的是springboot, 運作的是個jar包, 是以整的時候也出了幾個小問題, 還好下載下傳功能還是很簡單的, 話不多說, 下面直接戳重點!

方式一

在yml或properties檔案中配置spring.resources.static-locations      
spring.resources.static-locations中配置的是靜态資源位置, 這裡配置了什麼, 那麼所有的靜态資源就會到這裡查找, 是以一般這裡都會寫上classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources, 這是一個清單性的配置,查找檔案時會依賴于配置的先後順序依次進行, 現在我們要找到下載下傳的檔案, 可以繼續往後添加, 例如, 現在我的項目通路是localhost:8081, 我要下載下傳的檔案是 test1.csv, 而我的csv文生成在本地盤符D:\csv中, 這時候我們就在spring.resources.static-locations後面繼續添加", file:D:/csv/", 這就表示按照順序找檔案的時候, 前面的配置如果找不到, 就會到csv目錄中查找, 而我們現在要下載下傳檔案的方式就是通路, localhost:8081/test1.csv 即可.

方式二

編碼方式擴充springmvc的功能, 添加靜态資源通路映射      
建立config類, 實作WebMvcConfigurer接口, 實作其中的方法addResourceHandlers, 注冊靜态資源通路路徑, 指定通路的路徑到哪裡去找, 代碼如下:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    /**
     * 添加靜态通路資源映射
     *
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //
        registry.addResourceHandler("/csv/**").addResourceLocations("file:D:/csv/");
    }
}      

繼續閱讀