最近做项目,需要访问本地(服务器)的图片,由于之前没有做过图片的显示,所以写完相关代码之后发现无法显示图片,百度查了资料,才发现原因:
本地和服务器请求的url是不一样的,即存在路径问题。下面我写出一种解决办法,供以后记忆使用:
以C盘的下的temp目录为例。
在config目录下创建MyConfiguration,如下图
此处指定的物理路径为c盘的根目录,‘temp’应该放在前台的src下,与"/file/"拼在一块
指定相关路径也可在yml或properties中配置,作用与新建Configuration一样。
相关代码:
@Configuration
public class MyConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry){
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
//addResourceHandler是指定的虚拟路径,addResourceLocations是自己的物理路径,
registry.addResourceHandler("/file/**").addResourceLocations("file:C:/");
super.addResourceHandlers(registry);
}
}
此处为指定图片的存储位置与虚拟路径,之后直接通过虚拟路径访问本地(服务器)图片。
下面为Controller相关代码。
由于数据库中存储的是图片的绝对地址,所以取地址的时候只需要图片的名字即可,因为我的图片存放在c盘的temp文件夹下,
即: c:/temp/..... .jpg ,所以我从第8位开始截取,获得图片的名字,然后将图片名称传到html页面。
Subject subject= SecurityUtils.getSubject();
User user=(User) subject.getPrincipal();
此两句完全可以用request请求得到id,与加载图片无关。
最后放上html页面:
在src下将虚拟路径与图片存放的子目录名称串起来,再加上图片文件名,即可显示服务器存储的图片了。
之后就会显示图片了