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

前言

最近做项目,刚好遇到前段时间学的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访问,访问成功。。。服了我自己了[捂脸][捂脸]

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值