项目中需要将图片放在磁盘上,不能将图片放在webapp下面,否则图片多起来部署时会出现问题
在网上找了好长时间的解决方案,终于确认过眼神是我想要的,然后做一些总结
方法有两种,一种是基于配置文件另一种是基于代码层面配置
基于配置文件:
# 默认值为 /**
spring.mvc.static-path-pattern=/img/**
# 默认值为 classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
spring.resources.static-locations=这里设置要指向的外部路径,可以用多个使用英文逗号隔开,
举个例子:
一.
spring.mvc.static-path-pattern=/images/* locations=file:D:/images/,classpath:/static/
此时你的访问路径应为:http://localhost:8888/images/xxx.jpg
但是这样会出现一个问题,你之前所以的静态资源路径都要加上/images/不然会报404
二.
如果你不设置:spring.mvc.static-path-pattern=/images/*使用它默认的/**
那你的访问路径只能是xxx.jpg(只能是图片的名字)
打个比方:spring.mvc.static-path-pattern=/images/*就像一个最大的文件夹,该文件夹里可以有多个资源文件夹,但是想访问这些资源文件就必须通过这个最大的文件夹,但是这个大文件在配置中只能有一个(基于代码可以解决此问题)
注意:配置spring.resources.static-locations=file:D:/uploadWheel/,classpath:/static/ 要添加,classpath:/static/不然其他静态资源无法访问
基于代码:
package com.taotao.Config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** * @Description:访问项目外资源路径 * @Author: TaoTao * @Date:2019/11/16 11:16 */ @Configuration public class WebMvcConfiguration extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { //addResourceHandler是指你想在url请求的路径 //addResourceLocations是图片存放的真实路径 registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); registry.addResourceHandler("/uploadWheel/**").addResourceLocations("file:D:/uploadWheel/"); super.addResourceHandlers(registry); } }
www.lmaxmax.top