SpringBoot通过接口下载resources下的文件方式

 更新时间:2025年09月13日 16:45:56   作者:乘风御浪云帆之上  
SpringBoot通过接口下载resources目录文件,解决jar包部署后资源路径不可直接访问的问题,利用Resource类加载文件,通过HttpServletResponse返回流,实现用户下载功能

解决的问题

当项目打成jar包进行部署时,一些示例文件放在resources目录下,提供接口供用户访问下载

文件存放位置

接口实现

@RequestMapping("/downloadExampleExcel")
@ResponseBody
public void downloadExampleExcel(HttpServletResponse response) {
    InputStream inputStream = null;
    ServletOutputStream servletOutputStream = null;
    try {
        Resource resource = new DefaultResourceLoader().getResource("classpath:example_add_infos.xls");

        response.setContentType("application/force-download");
        response.setHeader("Content-Disposition", "attachment;fileName=" + "example_add_infos.xls");

        inputStream = resource.getInputStream();
        servletOutputStream = response.getOutputStream();
        IOUtils.copy(inputStream, servletOutputStream);
        response.flushBuffer();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (servletOutputStream != null) {
                servletOutputStream.close();
                servletOutputStream = null;
            }
            if (inputStream != null) {
                inputStream.close();
                inputStream = null;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

总结

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

相关文章

  • IDEA 2020.1 搜索不到Chinese ​(Simplified)​ Language Pack EAP,无法安装的问题

    IDEA 2020.1 搜索不到Chinese ​(Simplified)​ Language

    小编在安装中文插件时遇到IDEA 2020.1 搜索不到Chinese ​(Simplified)​ Language Pack EAP,无法安装的问题,本文给大家分享我的解决方法,感兴趣的朋友一起看看吧
    2020-04-04
  • SpringBoot中动态注入Bean的技巧分享

    SpringBoot中动态注入Bean的技巧分享

    在 Spring Boot 开发中,动态注入 Bean 是一种强大的技术,它允许我们根据特定条件或运行时环境灵活地创建和管理 Bean,本文将介绍 Spring Boot 中三种动态 Bean 注入技巧,需要的可以参考一下
    2025-06-06
  • Java反射机制实例代码分享

    Java反射机制实例代码分享

    这篇文章主要介绍了Java反射机制实例代码分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 在Java中使用redisTemplate操作缓存的方法示例

    在Java中使用redisTemplate操作缓存的方法示例

    这篇文章主要介绍了在Java中使用redisTemplate操作缓存的方法示例,在Redis中可以存储String、List、Set、Hash、Zset。感兴趣的可以了解一下
    2019-01-01
  • SpringBoot中@Conditional注解的介绍及实践

    SpringBoot中@Conditional注解的介绍及实践

    在 Spring Boot 中,@Conditional 注解用于实现 条件化 Bean 装配,本文将详细介绍 @Conditional 相关的注解,并结合实际应用示例讲解其使用方式,感兴趣的小伙伴可以了解下
    2025-03-03
  • java对象list使用stream根据某一个属性转换成map的3种方式举例

    java对象list使用stream根据某一个属性转换成map的3种方式举例

    开发小伙伴们通常会需要使用到对象和Map互相转换的开发场景,下面这篇文章主要给大家介绍了关于java对象list使用stream根据某一个属性转换成map的3种方式,需要的朋友可以参考下
    2024-01-01
  • Java for循环标签跳转到指定位置的示例详解

    Java for循环标签跳转到指定位置的示例详解

    这篇文章主要介绍了Java for循环标签跳转到指定位置,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • 详解OAuth2 Token 一定要放在请求头中吗

    详解OAuth2 Token 一定要放在请求头中吗

    这篇文章主要介绍了详解OAuth2 Token 一定要放在请求头中吗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • SpringBoot常用数据库开发技术汇总介绍

    SpringBoot常用数据库开发技术汇总介绍

    Spring Boot常用的数据库开发技术有JDBCTemplate、JPA和Mybatis,它们分别具有不同的特点和适用场景,可以根据具体的需求选择合适的技术来进行开发
    2023-04-04
  • SpringBoot跨域问题的解决方法实例

    SpringBoot跨域问题的解决方法实例

    这篇文章主要给大家介绍了关于SpringBoot跨域问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05

最新评论