項目demogitee地址:https://gitee.com/dsxiecn/spring-boot-demo.git
Javaweb中獲取文件的方式大致可以分為兩種
- 通過nginx等反向代理的方式獲取到靜態文件資源
- 在web項目中配置文件映射
第一種方式有時間去整理,本文介紹第二種方式,通過在項目中共配置文件映射完成靜態文件的獲取。
Spring Boot項目中存放文件的方式通常有三種
- resources/static:Spring Boot中默認的文件存放路徑,不需要做額外配置。
- resouces/自定義的文件夾:這種需要在properties或者yml文件中配置spring.resources.static-locations,或者實現WebMvcConfigurer類重寫addResourceHandlers實現。
- 存放在硬盤的其他空間,比如F:\opt\data\files,也同樣的,需要在properties或者yml文件中配置spring.resources.static-locations,或者實現WebMvcConfigurer類重寫addResourceHandlers實現。
結合實例去講解可能會更加的清楚,現有a、b、c、d四個文件,分別存放在不同的地方,如圖


文件內容示例為
F:\opt\data\files\d.txt -> Spring Boot Demo 技術交流QQ群:579949017 微信公眾號:IT咸魚圈
我想要訪問這四個文件,可以通過下面兩種方式配置
- 通過properties文件配置
server.port=8081 server.servlet.context-path=/spring-boot-demo spring.application.name=spring-boot-demo spring.resources.static-locations=classpath:static/,classpath:files/,file:F:/opt/data/files
- 通過實現WebMvcConfigurer重寫addResourceHandlers實現
package com.demo.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**") .addResourceLocations("classpath:static/") .addResourceLocations("classpath:files/") .addResourceLocations( "file:F:\\opt\\data\\files\\"); } }
上面任意的方式都可以將文件加載進來,訪問結果如下圖

如果會出現源文件亂碼的問題,可以通過File | Settings | Editor | File Encodings將幾個編碼設置為utf-8編碼格式,如果訪問頁面還是亂碼,則將源文件使用文編編輯工具轉為utf-8,一般這樣都會解決文件中中文亂碼的問題。