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();
        }
    }
}

总结

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

相关文章

  • springboot+spring data jpa实现新增及批量新增方式

    springboot+spring data jpa实现新增及批量新增方式

    这篇文章主要介绍了springboot+spring data jpa实现新增及批量新增方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java实现单线程聊天室

    Java实现单线程聊天室

    这篇文章主要为大家详细介绍了Java实现单线程聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • 利用gson将map转为json示例

    利用gson将map转为json示例

    这篇文章主要介绍了利用gson将map转为json示例,需要的朋友可以参考下
    2014-05-05
  • Spring @value用法示例详解

    Spring @value用法示例详解

    这篇文章主要介绍了Spring-@value用法详解,为了简化读取properties文件中的配置值,spring支持@value注解的方式来获取,这种方式大大简化了项目配置,提高业务中的灵活性,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-08-08
  • MyBatis-plus如何执行自定义SQL

    MyBatis-plus如何执行自定义SQL

    这篇文章主要介绍了MyBatis-plus如何执行自定义SQL问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 详细说明关于Java的数据库连接(JDBC)

    详细说明关于Java的数据库连接(JDBC)

    这篇文章主要介绍了详细说明关于Java的数据库连接JDBC,JDBC是用Java语言向数据库发送SQL语句,需要的朋友可以参考下面文章内容
    2021-09-09
  • SpringBoot整合Redis的实践

    SpringBoot整合Redis的实践

    Redis是一个高性能的内存数据库,支持多种数据结构和持久化机制,广泛应用于缓存、会话存储、排行榜等场景,SpringDataRedis是SpringFramework生态系统中用于简化Redis开发的模块,提供了对象映射、高级查询、事务支持、Pub/Sub消息订阅等功能
    2026-03-03
  • Spring Security加密和匹配及原理解析

    Spring Security加密和匹配及原理解析

    我们开发时进行密码加密,可用的加密手段有很多,比如对称加密、非对称加密、信息摘要等,本篇文章给大家介绍Spring Security加密和匹配及原理解析,感兴趣的朋友一起看看吧
    2023-10-10
  • idea如何自动生成Dao,mapper,pojo类

    idea如何自动生成Dao,mapper,pojo类

    文章介绍了自动生成Daomapperpojo类的过程,包括需要的两个配置文件db.properties和generatorConfig.xml,以及在pom.xml中添加依赖,最后,通过双击某个文件,控制台出现success即可生成所需类
    2026-03-03
  • Java实现ArrayList自动扩容

    Java实现ArrayList自动扩容

    ArrayList的扩容规则是非常简单的,它会根据需要自动扩容,本文就来介绍一下Java实现ArrayList自动扩容,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12

最新评论