基于Springboot2.3访问本地路径下静态资源的方法(解决报错:Not allowed to load local resource)

所属分类: 软件编程 / java 阅读数: 92
收藏 0 赞 0 分享

最近在做的一个项目中有一个比较奇葩的需求:

要在springboot中,上传本地的图片进行展示

我的第一反应是,直接在数据库字段加一个存储本地路径的字段,然后用thymeleaf的th:src渲染到前端就好了嘛!

理想很丰满,但现实却很骨感~

前端报了这样的错误Not allowed to load local resource

于是我想到了可以使用IO将图片先上传到static/images目录下,这样就不会出现禁止访问本地路径的问题了

但是这样实现,问题又来了:上传后的图片必须重启springboot,才能进行展示,否则无法加载

这个应该是因为springboot在初始化时加载静态资源,运行时导入的资源只能在再次初始化时加载

于是,我苦思冥想,查阅了多方资料,终于使用本地虚拟路径的方式,解决了这个问题

正片开始:

1.首先配置一个配置类

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MyConfigurer implements WebMvcConfigurer {
  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/image/**").addResourceLocations("file:E:/vote_images/");
  }
}

addResourceHandler是指你设置的虚拟路径,前端展示页面时填入这个路径来进行访问

addResourceLocations是指实际的本地路径,你需要代理给虚拟路径来访问的路径

2. IO实现文件上传

//如果文件夹不存在,创建文件夹
File file=new File("E:\\vote_images");
if(!file.exists()){
  file.mkdir();
}
//文件的上传
try (InputStream input = new FileInputStream(new File(judge));
   OutputStream output = new FileOutputStream("E:\\vote_images\\" + num + ".jpg")
   ) {
  byte[] buf = new byte[1024];
  int bytesRead;
  while ((bytesRead = input.read(buf)) != -1) {
    output.write(buf, 0, bytesRead);
  }
} catch (IOException e) {
  e.printStackTrace();
}
//设置路径字段
o.setPath("\\image\\" + (num++) + ".jpg");
//增加数据
optionsService.insert(o);

3.前端渲染页面

<img height="150px" width="225px" th:src="@{${opt.getPath()}}">

这样就成功实现需求啦

更多精彩内容其他人还在看

JavaWeb项目部署到服务器详细步骤详解

这篇文章主要介绍了JavaWeb项目如何部署到服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

IDEA基于支付宝小程序搭建springboot项目的详细步骤

这篇文章主要介绍了IDEA基于支付宝小程序搭建springboot项目的详细步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解SpringBoot应用服务启动与安全终止

这篇文章主要介绍了SpringBoot应用服务启动与安全终止,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Boot启动及退出加载项的方法

这篇文章主要介绍了Spring Boot启动及退出加载项的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Data Jpa 自动生成表结构的方法示例

这篇文章主要介绍了Spring Data Jpa 自动生成表结构的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

IDEA中osgi的开发应用指南详解

这篇文章主要介绍了IDEA中osgi的开发应用指南详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解用maven将dubbo工程打成jar包运行

这篇文章主要介绍了详解用maven将dubbo工程打成jar包运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解Java合并数组的两种实现方式

这篇文章主要介绍了Java合并数组的两种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

使用Jenkins Pipeline自动化构建发布Java项目的方法

这篇文章主要介绍了使用Jenkins Pipeline自动化构建发布Java项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

使用Maven配置Spring的方法步骤

这篇文章主要介绍了使用Maven配置Spring的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多