java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot项目作为文件服务器配置

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

作者: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/最后的/,这里加上之后本地访问正常。

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

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目录都是做了挂载的,于是排查其他原因

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

总结

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

您可能感兴趣的文章:
阅读全文