在Springboot中默認的靜態資源路徑有:classpath:/METAINF/resources/
,classpath:/resources/
,classpath:/static/
,classpath:/public/
,從這裏能夠看出這裏的靜態資源路徑都是在classpath
中(也就是在項目路徑下指定的這幾個文件夾)web
試想這樣一種狀況:一個網站有文件上傳文件的功能,若是被上傳的文件放在上述的那些文件夾中會有怎樣的後果?spring
網站數據與程序代碼不能有效分離;瀏覽器
當項目被打包成一個.jar
文件部署時,再將上傳的文件放到這個.jar
文件中是有多麼低的效率;springboot
網站數據的備份將會很痛苦。mvc
此時可能最佳的解決辦法是將靜態資源路徑設置到磁盤的基本個目錄。在Springboot中能夠直接在配置文件中覆蓋默認的靜態資源路徑的配置信息:application.properties
配置文件以下:app
spring.mvc.static-path-pattern=/** spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:這裏寫本身的上傳文件路徑(注意要以/結尾)
spring.mvc.static-path-pattern=/**
表示全部的訪問都通過靜態資源路徑;網站
spring.resources.static-locations
在這裏配置靜態資源路徑,前面說了這裏的配置是覆蓋默認配置,因此須要將默認的也加上不然static
、public
等這些路徑將不能被看成靜態資源路徑,在這個最末尾的file:${web.upload-path}
之全部要加file:
是由於指定的是一個具體的硬盤路徑,其餘的使用classpath
指的是系統環境變量。spa
因爲前面已經在靜態資源路徑中上傳了一個名爲1.jpg
的圖片,也使用server.port=1122
設置了端口號爲1122
,因此能夠經過瀏覽器打開:http://localhost:1122/1.jpg
訪問到剛剛上傳的圖片。可是要注意,若是你在springboot的配置文件中加了屬性server.context-path,即項目名,那麼訪問的時候必定要加上這個配置的屬性值,否則404..net
參考博客:https://blog.csdn.net/qq_36750461/article/details/85050946code