SpringBoot项目作为文件服务器配置方式

 更新时间:2025年12月01日 09:50:17   作者:SingleCase  
本文介绍了使用Spring Boot和Kkfileview实现文件在线预览功能的配置过程,包括yml配置、webmvc配置、拦截器配置以及部署到服务器时的注意事项

前言

最近做项目,刚好遇到前段时间学的kkfileview,需要实现文件在线预览功能,之前学习的时候采用的nginx部署方式做静态资源访问,于是这次我打算使用yml方式配置

yml配置

spring:
  resources:
    static-locations: file:E:/images/, file:E/images_bak/

这里解释一下,加这个"file:“是指定系统静态资源前缀,不加的话默认会有个"classpath:”。

webmvc配置

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

@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/file/**")
            .addResourceLocations("file:E:/images/")
            .addResourceLocations("file:E:/images_bak/")
        ;
    }
}

这里解释一下,将spring-resources-static-locations下的路径做映射,

然后在配置类中配置registry.addResourceHandler(“/file/**”)

后面访问E:/images/下的0.jpg或者E:/images_bak下的100.jpg,在浏览器中都可以通过http://ip:port/file/0.jpg或者100.jpg访问成功。

这里注意,如果访问资源提示401注意一下,拦截器是否对/file/**放行

访问文件404问题排查

最开始我这本地访问404问题,检查yml配置和mvc配置类,我这发现的问题是少了/,E:/images/最后的/,这里加上之后本地访问正常。

如果不是这里问题,检查其他地方

  • 1.url路径是否正确。
  • 2.文件路径下是否有对应文件
  • 3.检查yml中是否有如下配置:
server:
  servlet:
    context-path: /app

如果有这个配置的话,访问路径得加上前缀,http://ip:port/app/file/0.jpg

部署到服务器后访问404

这里先贴出服务器配置

spring:
  resources:
    static-locations: file:/data/jars/test/plan/, file:/data/jars/test/personinfo/

同理,webmvc的配置类也得对应更改。

因为之前刚接触kkfileview的时候,出现docker路径挂载问题,我这首先想到的就是路径挂载,但是我查看启动脚本,personinfo和plan目录都是做了挂载的,于是排查其他原因

  • 1.服务器端口是否对外暴露
  • 2.云服务器查看安全组配置
  • 3.文件路径

当我检查了这些之后,仍然不能访问,于是我又回到文件路径挂载的问题上,我尝试对personinfo和plan的上级目录做挂载,重启容器,url访问,访问成功。。。服了我自己了

总结

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

相关文章

  • Java循环嵌套详解及经典列题

    Java循环嵌套详解及经典列题

    这篇文章主要给大家介绍了关于Java循环嵌套详解及经典列题,包括循环嵌套的结构、变量作用域、不同类型循环的嵌套等,通过示例和经典练习题,展示了如何使用循环嵌套解决实际问题,需要的朋友可以参考下
    2024-12-12
  • SpringBoot中@EnableAutoConfiguration注解的实现

    SpringBoot中@EnableAutoConfiguration注解的实现

    Spring Boot@EnableAutoConfiguration是一个强大的工具,可以简化配置过程,从而实现快速开发,本文主要介绍了SpringBoot中@EnableAutoConfiguration注解的实现,感兴趣的可以了解一下
    2024-01-01
  • 在Struts2中如何将父类属性序列化为JSON格式的解决方法

    在Struts2中如何将父类属性序列化为JSON格式的解决方法

    本篇文章,小编将为大家介绍关于在Struts2中如何将父类属性序列化为JSON格式的解决方法,有需要的朋友可以参考一下
    2013-04-04
  • Java微信公众平台开发(7) 公众平台测试帐号的申请

    Java微信公众平台开发(7) 公众平台测试帐号的申请

    这篇文章主要为大家详细介绍了Java微信公众平台开发第七步,微信公众平台测试帐号的申请,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Java中面向对象的知识点总结

    Java中面向对象的知识点总结

    Java是一门面向对象的语言。对象是Java程序中的基本实体。除了对象之外Java程序同样处理基本数据。下面这篇文章主要给大家总结了关于Java中面向对象的知识点,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • springboot开启声明式事务的方法

    springboot开启声明式事务的方法

    本篇文章主要介绍了springboot开启声明式事务的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • springboot将lib和jar分离的操作方法

    springboot将lib和jar分离的操作方法

    本文介绍了如何通过优化pom.xml配置来减小Spring Boot项目的jar包大小,主要通过使用spring-boot-maven-plugin和maven-dependency-plugin插件,将依赖库打包到jar中,并通过指定外部lib路径的方式运行jar,从而减小jar包体积,感兴趣的朋友一起看看吧
    2025-02-02
  • JAVA实现基于Tcp协议的简单Socket通信实例

    JAVA实现基于Tcp协议的简单Socket通信实例

    本篇文章主要介绍了JAVA实现基于Tcp协议的简单Socket通信实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Java设计模式中的适配器模式详解

    Java设计模式中的适配器模式详解

    适配器模式(Adapter),是Java23种设计模式中的结构型模式之一,它可以将新的功能和原先的功能连接起来,使由于需求变动导致不能用的功能,重新利用起来,本文将详细聊一聊Java适配器的运用场景和使用方法,感兴趣的同学可以跟着小编一起来学习
    2023-05-05
  • Mybatis sqlMapConfig.xml中的mappers标签使用

    Mybatis sqlMapConfig.xml中的mappers标签使用

    这篇文章主要介绍了Mybatis sqlMapConfig.xml中的mappers标签使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。
    2022-01-01

最新评论