SpringBoot打包jar包之后图片上传的路径问题解决

320 阅读1分钟

「本文已参与「新人创作礼」活动,一起开启掘金创作之路。」

前提

转型做 java,做了一个 springboot 的管理后台,部署上线的时候,发现上传图片的功能无法正常显示,后面查看路径发现,原来是自己的路径读取依然是自己在本地的路径, 那么问题就来了,该如何去根据项目的环境去读取相对应的上传文件的路径?

在不同环境的 properties 文件下创建一个属性

我的读取配置是这样: 测试环境的使用是配置:application-dev.properties 正式环境的使用是配置:application-prod.properties 在这两个文件下分别创建一个属性:

#dev配置
center.upload.photo.path=/tongji/

#prod配置
center.upload.photo.path=/tongji/upload/

创建配置类

这个配置类的位置就是在 包下面的 config 文件夹下,会根据项目读取的配置文件 去读取对应的我们上面设定的配置项 所以我们只需要读取上面配置的值拼接上资源路径 我的资源路径是 /resources/upload 所以我们把读到的配置值拼接到后面即可!

package com.center.config.admin;
/**

* 用来配置拦截器的配置类
  */
import com.center.admin.interceptor.AuthorityInterceptor;
import com.center.constant.RuntimeConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.center.admin.interceptor.LoginInterceptor;

@Configuration
public class WebConfig implements WebMvcConfigurer {

@Value("${center.upload.photo.path}")
private String uploadPath;

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/upload/").addResourceLocations("file:" + uploadPath);
}

}

这个配置类的核心就是去继承 WebMvcConfigurer 这个配置类 之后通过注解重写对应的方法