SpringBoot本地磁盘映射问题

目录
  • SpringBoot本地磁盘映射
  • SpringBoot本地磁盘路径映射遇到的坑

SpringBoot本地磁盘映射

出于安全性考虑,SpringBoot无法直接访问本地磁盘的文件。在某些应用场景下,需要访问例如本地的图片等一些内容。这时候,我们可以通过创建一个虚拟路径来指向本地磁盘文件。

重写WEB配置类,添加新的静态资源路径配置。

代码如下:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/watch/**").addResourceLocations("file:C://img/");
    }
}

这种方法相当于增加静态资源路径。SpringBoot本身自带的静态资源路径并不会被替代。

SpringBoot本地磁盘路径映射遇到的坑

今天学习了Springboot的磁盘映射,也就是将电脑上的D盘作为静态资源让用户可以通过IP或外网地址访问到,网上大多说的是继承 WebMvcConfigurerAdapter 但这个方法已经过时了,网上又有好多人说实现WebMvcConfigurer几口或者继承另一个类(忘了是啥了),我用的是实现WebMvcConfigurer,刚开始不知道怎么写,具体实现那个方法,就去网上查最后结果如下

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
public void  addResourceHandlers(ResourceHandlerRegistry registry){
    registry.addResourceHandler("/**").addResourceLocations("D:\\");
    WebMvcConfigurer.super.addResourceHandlers(registry);
}
}

这样死活访问不到页面一直报错404,纠结了一上午,偶然找到了一篇文章,上面是这样写的:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
public void  addResourceHandlers(ResourceHandlerRegistry registry){
    registry.addResourceHandler("/**").addResourceLocations("file:D:\\");
    WebMvcConfigurer.super.addResourceHandlers(registry);
}
}

复制过来之后,神奇的能访问到资源了,可能是由于视觉受IDEA方法属性的提示影响还是怎么着,一直以为file:是编辑软件的提示不用加,导致后来@value取值时以为取不到呢!现在记录下来预防自己以后再忘了

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Value("${url.diskUrl}")
private String diskUrl;
public void  addResourceHandlers(ResourceHandlerRegistry registry){
    registry.addResourceHandler("/**").addResourceLocations(diskUrl);
    WebMvcConfigurer.super.addResourceHandlers(registry);
}
}

配置文件

url:
diskUrl: file:D:\
webUrl: http://localhost:8080/

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • springboot文件虚拟路径映射方式

    目录 springboot文件虚拟路径映射 在application.properties配置文件中配置 springboot 配置文件虚拟路径 供外部访问 第一步:配置application.yml 第二步:添加 Configuration 文件 重启 springboot文件虚拟路径映射 在application.properties配置文件中配置 spring.http.multipart.location= D:/ spring.mvc.static-path-pattern=/** s

  • SpringBoot上传文件并配置本地资源映射来访问文件的实例代码

    1.准备工作 1.新建一个SpringBoot项目加上web依赖, 所有依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.thymeleaf</groupId&

  • 使用SpringBoot设置虚拟路径映射绝对路径

    目录 SpringBoot 设置虚拟路径映射绝对路径 下面我们就来代码实现下 springboot打war包图片的虚拟路径映射 在html图片的路径如图 然后要映射到阿里云Linux服务器上路径 映射方法 在Host节点加上下面的 这里顺便放上后台接收上传头像的代码 SpringBoot 设置虚拟路径映射绝对路径 上传图片到本地路径,得到的是一个绝对路径例如:D:\picpath\O48681516429132485.png 但是前台需要的数据是这样的 :http://localhost:808

  • 使用springboot访问图片本地路径并映射成url

    目录 springboot访问图片本地路径并映射成url 增加一个配置类: 运行该工程: SpringBoot设置url访问本地图片 创建WebMvcConfig配置类 springboot访问图片本地路径并映射成url springboot如何访问本地路径并获取图片等静态资源文件的url?代码写法如下: 增加一个配置类: @Configuration public class WebMvcConfigurer extends WebMvcConfigurer { @Override publi

  • SpringBoot本地磁盘映射问题

    目录 SpringBoot本地磁盘映射 SpringBoot本地磁盘路径映射遇到的坑 SpringBoot本地磁盘映射 出于安全性考虑,SpringBoot无法直接访问本地磁盘的文件.在某些应用场景下,需要访问例如本地的图片等一些内容.这时候,我们可以通过创建一个虚拟路径来指向本地磁盘文件. 重写WEB配置类,添加新的静态资源路径配置. 代码如下: @Configuration public class WebConfig implements WebMvcConfigurer {     @O

  • bootstrap fileinput组件整合Springmvc上传图片到本地磁盘

    整合前的准备步骤 1.搭建好基础框架,本文用的是SSM(Spring+SpringMVC+Mybatis),这里的过程就不在本文中讲了,之前我做个一个demo(ssm整合+用户模块),可以参考这个搭建好. 2.下载bootstrap fileinput组件源码: https://github.com/kartik-v/bootstrap-fileinput/ 搭建后的效果图 图1. 图2. 图3. 图4. 图5. 在需要编写的jsp页面引入组件 本工程的路径界面如下: 在jsp引入组件需要的js

  • SpringBoot文件访问映射如何实现

    这篇文章主要介绍了SpringBoot文件访问映射如何实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过SpringBoot可以把磁盘内所有的文件都访问到 有一张图片存放在 E://images/acti/123.jpg import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.ann

  • SpringBoot重写addResourceHandlers映射文件路径方式

    目录 重写addResourceHandlers映射文件路径 在此记录以下 配置本地资源映射路径addResourceHandlers 成功访问如下 重写addResourceHandlers映射文件路径 在看一个博客源码发现页面的图片所映射的地址在SpringBoot静态资源文件夹下找不到原來在这里是通过下面这段代码,将/store/**地址映射为getStorePath()得到的地址 在此记录以下 registry.addResourceHandler("/store/**").a

  • DIY你的爱机 让本地磁盘也可以玩自动播放

    平时看惯了电脑那张呆板的脸的朋友,一定很希望能够DIY自己的爱机.通过修改注册表,我们可以更改许多系统默认的图标,但却发现很难更改驱动器的图标(Windows 2000以上系统),即使利用一些第三方软件(如超级兔子)修改,也只能是千篇一律地把所有分区的图标改为同一个图标.有没有想过给每个分区都设置一个不同的图标,并像光驱一样,具有"自动播放"功能?按照下面介绍的修改方法,我们完全可以让自己的电脑更酷一些(以下方法是以Windows 2000为例,Windows 2000以上系统都适合)

  • Android studio 项目手动在本地磁盘中删除module后,残留文件夹无法删除的问题解决方法

    Android studio 项目手动在本地磁盘中删除module后,残留文件夹无法删除问题 如标题所述,本人在本地磁盘删除project中的module后(好吧,是我太菜了),仍然残留着一个文件夹,但是又无法右键之后又无法删除,(强迫症得我觉得很难受),每次打开时候还Android studio还报了一个错误,如下: .Unsupported Modules Detected: Compilation is not supported for following modules: testfo

  • logrus hook输出日志到本地磁盘的操作

    logrus是go的一个日志框架,它最让人激动的应该是hook机制,可以在初始化时为logrus添加hook,logrus可以实现各种扩展功能,可以将日志输出到elasticsearch和activemq等中间件去,甚至可以输出到你的email和叮叮中去,不要问为为什么可以发现可以输入到叮叮中去,都是泪,手动笑哭! 言归正传,这里就简单的通过hook机制将文件输出到本地磁盘. 首先 go get github.com/sirupsen/logrus 然后 logrus和go lib里面一样有6个

  • 五分钟教你手写 SpringBoot 本地事务管理实现

    白菜Java自习室 涵盖核心知识 1. SpringBoot 事务 一直在用 SpringBoot 中的 @Transactional 来做事务管理,但是很少没想过 SpringBoot 是如何实现事务管理的,今天从源码入手,看看 @Transactional 是如何实现事务的,最后我们结合源码的理解,自己动手写一个类似的注解来实现事务管理,帮助我们加深理解. 1.1. 事务的隔离级别 事务为什么需要隔离级别呢?这是因为在并发事务情况下,如果没有隔离级别会导致如下问题: 脏读 (Dirty Re

  • SpringBoot + MapStruct 属性映射工具的使用详解

    1. MapStruct 是什么? 截取下官方的原话 我给翻译了一下 说白了 当你的对象A有几十个属性 而另一个对象B 与A比较只有一些细微的差别 那么这时候只需要映射过去即可 而不需要疯狂的调用set方法 进行属性的拷贝 这就是这个工具给我们带来的最大便利 官方github链接 点击跳转 2. 引入依赖 采用Mapstruct的 最新版本 1.4.2.Final SpringBoot版本不要选新版的 我对比了下 2.3.0 和 2.5.4 后者会出现属性映射为null的情况 已经将问题反馈了

随机推荐