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

张芝山 本文由博客端 http://zhangzeshan.top 主动推送

前提

转型做 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 这个配置类
之后通过注解重写对应的方法


至此,路径的问题解决!

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2811 引用 • 8041 回帖 • 748 关注
2 操作
zhangzeshan 在 2020-10-14 19:43:52 更新了该帖
zhangzeshan 在 2020-10-14 16:53:51 更新了该帖

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...