最近使用springboot开发网站的时候,遇到了一个图片存储问题,我之前的方法是,把证书图片存在项目的static目录下面,这样的话,打包发布到远程服务器后,虽然可以正常展示已经打包封装好的内容,但是如果新产生的图片则是不行的!为此,我在网上搜了一下,换成另外的存储位置,采用路径映射的方式,解决了这个难题。
下面是解决思路和办法。
第一步:我们需要配置文件内添加一个路径信息:
#配置证书图片本地存储路径 file.uploadFolder=D:/zhengshu/
第二步,我们需要提前 准备好配置管理类的配置参数。
package com.example.mydemo.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
// 通过读取配置项获取的文件上传路径
@Value("${file.uploadFolder}")
private String basePath;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
/*
* 资源映射路径
* addResourceHandler:访问映射路径
* addResourceLocations:资源绝对路径
*/
registry.addResourceHandler("/zhengshu/**").addResourceLocations("file:" + basePath);
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
}
如图,代码里加了注释,大家自己看就能看懂了。
读取配置文件的路径信息,通过一个registry的调用方法,完成了虚拟路径和实体路径的映射关系。
这样我们的网站项目,就能读取到本地物理路径内的图片信息了。
这样做可以提升安全,避开浏览器直接访问我们的本地硬盘信息。
如图,证书的存储物理路径,就是本地硬盘的某一个文件夹。
如图,前端提交的需求,接口确实正常执行了图片的创建存储操作。现在在前端是可以借助于虚拟路径正常访问这些图片的。
如图,前端浏览器可以 正常访问这些存在本地物理硬盘内的图片信息。