SpringBoot 项目中的图片处理策略之本地存储与路径映射

 更新时间:2023年12月09日 15:03:25   作者:会飞的喵喵  
在SpringBoot项目中,静态资源存放在static目录下,使得前端可以通过URL来访问这些资源,我们就需要将文件系统的文件路径与URL建立一个映射关系,把文件系统中的文件当成我们的静态资源即可,本文给大家介绍SpringBoot本地存储与路径映射的相关知识,感兴趣的朋友一起看看吧

一、前言

  在做网页的时候,会经常遇到一个问题,那就是如何在前端访问图片,还有就是图片应该如何存?存在数据库,然后直接把文件发给前端?数据库表示:“哥们你可真行,我快装不下了”。比较好一点的做法就是把图片存在本地*(ps:这里不考虑云存储)*,然后数据库存该文件的路径。这样一来前端如何访问这个文件呢?我们都知道在SpringBoot项目中,静态资源都存放在static目录下,使得前端可以通过URL来访问这些资源,现在我们就需要将文件系统的文件路径与 URL 建立一个映射关系,把文件系统中的文件当成我们的静态资源即可。下面开始演示:

二、演示

  本篇的重点是如何通过 URL 来访问服务器的文件系统中的文件,这里就不使用数据库了。

  • 我们创建一个SpringBoot项目,依赖如下:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • static目录下,我们可以直接通过 URL 来访问,该目录下有一个/image/avatar.png文件

我们现在的目标是:假设在D/image目录下有一个图片,如何直接通过URL来访问本地文件呢?

  • application.properties配置文件中定义图片存放的位置
# 图片保存路劲
imagepath=D:/image/
  • 创建一个类实现WebMvcConfigurer接口并重写addResourceHandlers方法。
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
    @Value("${imagepath}")
    private String imagePath;//从配置文件中获取文件路径
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/image/**")
                .addResourceLocations("file:" + imagePath);
    }
}
  • addResourceHandler("/image/**"):定义了一个URL模式,即以 "/image/" 开头的请求路径。任何匹配该模式的请求都将被映射到相应的静态资源。
  • .addResourceLocations("file:" + imagepath):指定了实际存储静态资源的文件系统路径,"file:" 前缀告诉Spring MVC,这是一个文件系统路径。
  • 这段代码的作用是告诉Spring MVC,当接收到以 "/image/" 开头的请求时,去指定的文件系统路径imagepath(D/image/)查找对应的静态资源。例如:当请求 "/image/test.jpg" 时,Spring MVC 将会尝试在 "D/image/" 目录下查找并返回 "test.jpg" 这个文件作为响应。
  • "D/image/"下保存一个图片

  • 访问http://localhost:8080/image/test.png

  可以看到映射成功了,其实在数据库中存的就是"/image/"+imageName。如果你要将项目部署到Linux服务器上,需要把文件目录修改成Linux系统的,比如:

imagepath=/root/soft/images/

到此这篇关于SpringBoot 项目中的图片处理策略:本地存储与路径映射的文章就介绍到这了,更多相关SpringBoot 本地存储与路径映射内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在SpringBoot中使用@Value注解来设置默认值的方法

    在SpringBoot中使用@Value注解来设置默认值的方法

    Spring Boot提供了一种使用注解设置默认值的方式,即使用 @Value 注解,下面这篇文章主要给大家介绍了关于如何在SpringBoot中使用@Value注解来设置默认值的相关资料,需要的朋友可以参考下
    2023-10-10
  • Java中关于泛型、包装类及ArrayList的详细教程

    Java中关于泛型、包装类及ArrayList的详细教程

    泛型可以在类或方法中预支地使用未知的类型。这篇文章主要介绍了Java中关于泛型、包装类及ArrayList的详细教程,需要的朋友可以参考下
    2021-12-12
  • 解决Java Redis删除HashMap中的key踩到的坑

    解决Java Redis删除HashMap中的key踩到的坑

    这篇文章主要介绍了解决Java Redis删除HashMap中的key踩到的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • SpringBoot整合MyBatis超详细教程

    SpringBoot整合MyBatis超详细教程

    这篇文章主要介绍了SpringBoot整合MyBatis超详细教程,下面从配置模式、注解模式、混合模式三个方面进行说明MyBatis与SpringBoot的整合,需要的朋友可以参考下
    2021-05-05
  • @ConfigurationProperties遇到的坑及解决

    @ConfigurationProperties遇到的坑及解决

    这篇文章主要介绍了解决@ConfigurationProperties遇到的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringBoot实现excel文件生成和下载

    SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • 最新版 IDEA 2022.1 正式上线新功能一览

    最新版 IDEA 2022.1 正式上线新功能一览

    4月12日,最新版的IDEA 2022.1正式发布,无论是从UI上,还是功能上,都有了很大的改进,完善,一起来看一下都有那些重要的更新
    2022-04-04
  • 基于Spring Web Jackson对RequestBody反序列化失败的解决

    基于Spring Web Jackson对RequestBody反序列化失败的解决

    这篇文章主要介绍了基于Spring Web Jackson对RequestBody反序列化失败的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Java原子操作CAS原理解析

    Java原子操作CAS原理解析

    这篇文章主要介绍了Java原子操作CAS原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java基础之Spring5的核心之一IOC容器

    Java基础之Spring5的核心之一IOC容器

    这篇文章主要介绍了Java基础之Spring5的核心之一IOC容器,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04

最新评论