若依项目学习 后端图片访问

案例说明:

服务器上的路径为home/zkqy/uploadPath/upload/2025/06/12/yileina_20250612182156A002.jpg

网页url https://xxx.com/profile/upload/2025/06/12/yileina_20250612182156A002.jpg

只要直接访问网页的url就可以得到图片了,也没有代理啥的,是不是很神奇。

上面的路径和url可以化简成这样。

服务器的路径为:文件初始路径 + 文件上传附加路径

网页的路径为:服务器的域名 + profile + 文件上传附加路径

源码分析

核心的配置文件是在 ResourcesConfig.java,核心代码如下

java 复制代码
@Configuration
public class ResourcesConfig implements WebMvcConfigurer
{
    @Autowired
    private RepeatSubmitInterceptor repeatSubmitInterceptor;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry)
    {
        /** 本地文件上传路径 */
        registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**")
                .addResourceLocations("file:" + RuoYiConfig.getProfile() + "/");
    }
}
    

可以发现这个类实现了WebMvcConfigurer接口里面的addResourceHandlers这个资源拦截器。

1. addResourceHandler:定义 URL 访问路径

  • Constants.RESOURCE_PREFIX + "/**"

    这是一个字符串,表示匹配的 URL 路径模式。例如:

    • RESOURCE_PREFIX = "/profile",则匹配所有以 /profile/ 开头的请求(如 /profile/upload/xxx.txt)。
  • /** 是通配符,表示匹配该路径下的所有子路径。

2. addResourceLocations:指定物理存储路径

  • "file:" + RuoYiConfig.getProfile() + "/"

    这里将 URL 路径映射到服务器的本地文件系统:

    • file: 表示这是一个本地文件系统路径(区别于 classpath 资源)。
    • RuoYiConfig.getProfile() 是若依框架中获取文件存储根目录的方法(如返回 D:/zkqy/uploadPath)。
    • 最终拼接为物理路径,例如:file:D:/zkqy/uploadPath/
相关推荐
bcbnb5 分钟前
基于Mach-O文件的动态库与静态库归属方案及API扫描实践
后端·ios
光辉GuangHui7 分钟前
SDD 实践:OpenSpec + Superpowers 整合创建自定义工作流
前端·后端
金銀銅鐵9 分钟前
[Java] 如何自动生成简单的 PlantUML 类图
java·后端
小江的记录本13 分钟前
【Spring Boot】Spring Boot 全体系知识结构化拆解(附 Spring Boot 高频面试八股文精简版)
java·spring boot·后端·spring·面试·tomcat·mybatis
ETA813 分钟前
流式背后的状态机:深入解析 AI Agent 的核心循环机制
后端·源码
在屏幕前出油18 分钟前
04. FastAPI——响应类型
开发语言·后端·python·pycharm·fastapi
Ivanqhz24 分钟前
寄存器分配的核心函数 allocate
java·开发语言·后端·python·rust
程序员爱钓鱼27 分钟前
GoWeb开发核心库: net/http深度指南
后端·面试·go
程序员Terry28 分钟前
Java 代理模式:从生活中的"中介"到代码中的"代理人"
后端·设计模式
野犬寒鸦29 分钟前
JVM垃圾回收机制深度解析(G1篇)(垃圾回收过程及专业名词详解)(补充)
java·服务器·开发语言·jvm·后端·面试