spring boot自带图片服务器使用详解

发布时间 - 2026-01-11 02:53:25    点击率:

我们平时在日常项目中经常会遇到图片的上传和访问的情景,平时我们可能习惯于把图片传到resource或者项项目中的某个位置,这样会有一个缺点,当我们重新项目打包时,这些图片会丢失。为了解决这一缺点,我们只有把图片的路径放到项目外,而springboot集成了映射项目外路径的这一功能。ps:当然目前一些大的项目,会有多个子系统都用到文件上传和下载,这时搭建文件服务器是最好的选择。

上传的实现请看:Spring Boot实现图片上传功能 这位大神在里面讲的很详细;

下面请看springboot如何访问项目外的图片:

首先要写个配置类:

application.properties文件中的路径配置如下

cbs.imagesPath=file:/E:/imagesuuuu/

配置类如下:

package bp.config;

import org.slf4j.LoggerFactory;
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.WebMvcConfigurerAdapter;

/**
 * @ClassName: WebAppConfig
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author Administrator
 * @date 2017年7月11日
 */
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
   //获取配置文件中图片的路径
 @Value("${cbs.imagesPath}")
 private String mImagesPath;
 //访问图片方法
 @Override
 public void addResourceHandlers(ResourceHandlerRegistry registry) {
  if(mImagesPath.equals("") || mImagesPath.equals("${cbs.imagesPath}")){
   String imagesPath = WebAppConfig.class.getClassLoader().getResource("").getPath();
   if(imagesPath.indexOf(".jar")>0){
    imagesPath = imagesPath.substring(0, imagesPath.indexOf(".jar"));
   }else if(imagesPath.indexOf("classes")>0){
    imagesPath = "file:"+imagesPath.substring(0, imagesPath.indexOf("classes"));
   }
   imagesPath = imagesPath.substring(0, imagesPath.lastIndexOf("/"))+"/images/";
   mImagesPath = imagesPath;
  }
  LoggerFactory.getLogger(WebAppConfig.class).info("imagesPath="+mImagesPath);
  registry.addResourceHandler("/images/**").addResourceLocations(mImagesPath);
  super.addResourceHandlers(registry);
 }
}

注意:如果项目中有拦截器,一定要添加不要拦截图片路径,方法如下:

@Override
 public void addInterceptors(InterceptorRegistry registry) {
  registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/api/**").excludePathPatterns("/api/getLogin")
    .excludePathPatterns("/api/getExit");
  super.addInterceptors(registry);

 }

 这样启动项目就可以获取路径下的图片了:访问地址例如:localhost:8080/images/123.png

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# spring  # boot  # 图片服务器  # spring boot2.0图片上传至本地或服务器并配置虚拟路径的方法  # SpringBoot上传文件到本服务器 目录与jar包同级问题  # springboot打包部署到linux服务器的方法  # Spring boot项目部署到云服务器小白教程详解  # SpringBoot war包部署到Tomcat服务器  # spring Boot打包部署到远程服务器的tomcat中  # bootstrap-table实现服务器分页的示例 (spring 后台)  # 详解SpringBoot下文件上传与下载的实现  # Spring Boot + thymeleaf 实现文件上传下载功能  # SpringBoot实现文件上传下载功能小结  # springboot实现文件上传和下载功能  # 详解SpringBoot文件上传下载和多文件上传(图文)  # spring boot搭建文件服务器解决同时上传多个图片和下载的问题  # 这一  # 会有  # 平时  # 上传  # 多个  # 中有  # 大神  # 在里面  # 当我们  # 句话  # 配置文件  # 大家多多  # 要写  # 就可以  # 方法如下  # 图片上传  # 文件上传  # 中经  # 文件服务器  # 拦截器 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  北京网站制作的公司有哪些,北京白云观官方网站?  如何获取上海专业网站定制建站电话?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何在宝塔面板中修改默认建站目录?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  Swift中switch语句区间和元组模式匹配  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  用yum安装MySQLdb模块的步骤方法  jQuery validate插件功能与用法详解  简历在线制作网站免费版,如何创建个人简历?  新三国志曹操传主线渭水交兵攻略  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Python并发异常传播_错误处理解析【教程】  Laravel如何处理CORS跨域请求?(配置示例)  佛山企业网站制作公司有哪些,沟通100网上服务官网?  java获取注册ip实例  android nfc常用标签读取总结  EditPlus中的正则表达式 实战(1)  如何快速搭建高效可靠的建站解决方案?  MySQL查询结果复制到新表的方法(更新、插入)  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  装修招标网站设计制作流程,装修招标流程?  韩国服务器如何优化跨境访问实现高效连接?  黑客如何利用漏洞与弱口令入侵网站服务器?  Laravel中的Facade(门面)到底是什么原理  Laravel如何使用Eloquent进行子查询  node.js报错:Cannot find module 'ejs'的解决办法  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  公司门户网站制作流程,华为官网怎么做?  微信小程序 闭包写法详细介绍  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  如何在万网ECS上快速搭建专属网站?  Bootstrap整体框架之JavaScript插件架构  如何在建站宝盒中设置产品搜索功能?  如何快速生成高效建站系统源代码?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  详解jQuery中的事件  如何挑选最适合建站的高性能VPS主机?  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  如何快速生成专业多端适配建站电话?  怎么用AI帮你为初创公司进行市场定位分析?  微信小程序 五星评分(包括半颗星评分)实例代码  如何在服务器上三步完成建站并提升流量?  原生JS实现图片轮播切换效果  浅谈Javascript中的Label语句  Laravel如何使用Telescope进行调试?(安装和使用教程)  javascript事件捕获机制【深入分析IE和DOM中的事件模型】