在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