以前使用SSM框架开发web项目时,访问本地磁盘图片的虚拟路径可以在Tomcat的service.xml文件中进行配置,具体可看我的另一篇文章:IDEA设置虚拟路径,解决前端展示本地磁盘图片问题!
🆗,现在问题来了,spring boot的Tomcat是内置的,所以在Tomcat的service.xml文件中配置虚拟路径是行不通的。需要改为@Configuration class配置类的形式来定制资源映射路径
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 MyWebAppConfiguration implements WebMvcConfigurer {
//定制资源映射
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//意思是:url中读取到/upload时,就会自动将/upload解析成D:/idea/java_workspace/image/upload
registry.addResourceHandler("/upload/**").addResourceLocations("file:D:/idea/java_workspace/image/upload/");
/**
* Linux系统
* registry.addResourceHandler("/upload/**").addResourceLocations("file:/home/image/upload/");
*/
}
}
addResourceHandler(“xxx”) 用于指定对外暴露的访问路径,addResourceLocations(“xxx”) 用于指定文件放置路径
🆗,编写了上面的这些代码后,虚拟路径就已经配置成功咯
这是我本地图片的地址
效果
🆗,前面的是无坑区。下面我们来讲一下坑,怎么挖坑把自己埋了然后怪别人没有拉住自己!
在开发web项目时,我们一般都会设置项目根路径(应用上下文路径)
server:
port: 8080 #tomcat端口号
servlet:
context-path: /cd #项目根路径/应用上下文路径
🆗,如果有设置ContextPath上下文路径,那么访问本地图片的时候还需要在URL中加上该应用上下文路径,才能正常访问到本地图片,否则404
所以,在配置了虚拟路径之后还是访问不了本地图片,那么就去看一下你有没有是不是配置了应用上下文路径