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/");
}
}