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/");
}
}
上面代碼的意思就是當我訪問靜態資源路徑是localhost:8081/csv/**這樣類似的路徑的時候, 就會到D盤的csv目錄中找, 現在訪問localhost:8081/csv/test1.csv就可以下載下來了, 其中的handler和location根據你自己的需求更換即可