springboot文件映射配置(文件路徑)

一、基於yml 或者properties配置文件

上傳的文件存放在某盤某目錄下,如 E:/Practices/test

具體配置:

web:

  upload-path: E:/Practices/test

  front-path: E:/Practices

spring:

  resources:

    static-locations: file:${web.upload-path},file:${web.front-path}

訪問方式:IP+端口/文件名

現在:http://localhost:8003/1442823076292.jpeg

注:不需要配置什麼加載配置類,上傳的文件到 E:/Practices/test。文件顯示如上訪問。

二、基於springboot配置類,改變原來的默認配置

此處不在贅述上傳過程,簡單描述它的上傳思路:

上傳的文件存放在某盤某目錄下,如 E:/視頻製作/圖片/

通過配置文件類 WebMvcConfig 將本地存放文件目錄映射到項目路徑下,具體查看配置類

項目啓動,加載配置類。

配置類如下:

@Configuration

public class WebMvcConfig extends WebMvcConfigurationSupport {

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

String path = "E:\\Practices\\";//"/tools/images/";//"E:/視頻製作/圖片/";

// 上傳路徑映射 會使spring boot的自動配置失效

registry.addResourceHandler("/image/**").addResourceLocations("file:" + path);

super.addResourceHandlers(registry);

}

}

意思:

項目訪問image路徑會直接訪問path路徑下的文件

訪問方式:

原來:file:///E:/%E8%A7%86%E9%A2%91%E5%88%B6%E4%BD%9C/%E5%9B%BE%E7%89%87/1442823076292.jpeg

現在:

http://localhost:9001/image/1442823076292.jpeg

http://localhost:9001/image/one/1442823076292.jpeg

三、基於絕對路徑訪問

簡單思路:

獲取resources下的某目錄,如static文件夾。獲取方式如下:

File staticFilePath = ResourceUtils.getFile("classpath:static");

根據獲得的路徑,創建新的路徑,並上傳文件。詳情查看AbsolutePathController的方法uploadToProject

基於默認配置,則不需要加配置類。

若加了配置類,改變原來的路徑情況,需要補上:

public void addResourceHandlers(ResourceHandlerRegistry registry) {

registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");

super.addResourceHandlers(registry);

}

 

對比解析:上傳的文件到項目的resources目錄下,實際加載得到的文件是絕對路徑下的文件如image/1442823076292.jpeg,主要的原理還是文件映射。訪問的時候,直接http://localhost:9001/images/1442823076292.jpeg

注:不適用jar包形式啓動的項目,樓主暫時沒有找到好的方案,有好的方案,麻煩多多分享,謝謝。可以本地調試玩耍。生產上,建議使用外部路徑

四、基於Nginx配置的訪問

簡單思路:

上傳文件到某路徑下,如C:/文件

使用Nginx服務器,配置訪問路徑並映射到文件上傳的路徑下

以下是Nginx的配置

基於alias配置

location /static/ {

   alias /var/www/static/;

}

alas會把指定路徑當作文件路徑

注意:alias指定的目錄後面必須要加上"/",即/var/www/static/不能改成/var/www/static 訪問http://IP:PORT/static/index.html時,實際訪問的是/var/www/static/index.html 這種實現,類似 基於springboot配置類

基於配置root

location /static/ {

  root /var/www/;

}

root會把指定路徑拼接到文件路徑後,再進行訪問

注意:location中指定的/static/必須是在root指定的/var/www/目錄中真實存在的。 通過瀏覽器訪問http://127.0.0.1:7001/static/t.txt,則訪問服務器的文件是/var/www/static/t.txt

 

項目例子:

https://github.com/krycai/Allen-projects/tree/master/allen-upload

 

講解比較詳細的例子:https://www.javatt.com/p/11507

 

發佈了38 篇原創文章 · 獲贊 16 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章