SpringBoot下载docx文档方式

 更新时间:2025年06月23日 09:09:36   作者:@穷且益坚,不坠青云之志  
这篇文章主要介绍了SpringBoot下载docx文档方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

SpringBoot下载docx文档

功能需求很简单:我想实现一个在线下载简历docx文档的功能

实现效果如下:点击下载后,就出现下载的文档

目前该方式有局限性只能下载微软的word文档,而wps的会下载失败

一、具体代码

使用的库为 org.apache.poi 专门处理Microsoft 的文档

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-scratchpad</artifactId>
            <version>5.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.2</version>
        </dependency>

实现思路:

(1)读取简历文件进入输入流 (输入流读取文件)

(2)利用 XWPFDocument 装载 读取的数据流,将其写入 响应里面

 public void downloadDoc(HttpServletResponse response) throws UnsupportedEncodingException {
        String baseUrl = "D:\\testDownload\\";
        String temp = "5939.docx";
        File file = new File(baseUrl + temp);
        //获取文件名
        String filename  = file.getName();
        //获取后缀名
        int i = filename.lastIndexOf(".");
        String extension = filename.substring(i+1);

        //设置响应的信息
        response.reset();
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-Disposition", "attachment;filename=" +  URLEncoder.encode(filename, "utf8"));
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        //设置浏览器接受类型为流
        response.setContentType("application/octet-stream;charset=UTF-8");
        try {
            InputStream in = new FileInputStream(file);
            // 将文件写入输入流
            OutputStream out = response.getOutputStream();
            if("docx".equals(extension) || "doc".equals(extension)) {
                //docx文件就以XWPFDocument创建
                XWPFDocument docx = new XWPFDocument(in);
                docx.write(out);
                docx.close();
            } else {
                //其他类型的文件,按照普通文件传输 如(zip、rar等压缩包)
                int len;
                //一次传输1M大小字节
                byte[] bytes = new byte[1024];
                while ((len = in.read(bytes)) != -1) {
                    out.write(bytes  , 0 , len);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

二、前端如何下载

我使用最简单的方式:window.open(ulr)

总结

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

相关文章

  • Java循环对bean的属性进行赋值的实现

    Java循环对bean的属性进行赋值的实现

    本文主要介绍了Java循环对bean的属性进行赋值,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 一次踩坑记录 @valid注解不生效 排查过程

    一次踩坑记录 @valid注解不生效 排查过程

    这篇文章主要介绍了一次踩坑记录 @valid注解不生效 排查过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Spring Data JPA注解Entity使用示例详解

    Spring Data JPA注解Entity使用示例详解

    这篇文章主要为大家介绍了Spring Data JPA注解Entity使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 浅析springcloud 整合 zipkin-server 内存日志监控

    浅析springcloud 整合 zipkin-server 内存日志监控

    Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),其主要功能是聚集来自各个异构系统的实时监控数据。这篇文章主要介绍了springcloud 整合 zipkin-server 内存日志监控,需要的朋友可以参考下
    2019-11-11
  • Java基础之StringBuffer详解

    Java基础之StringBuffer详解

    这篇文章主要介绍了Java基础之StringBuffer详解,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • mybatis-plus阻止全表更新与删除的实现

    mybatis-plus阻止全表更新与删除的实现

    BlockAttackInnerInterceptor 是mybatis-plus的一个内置拦截器,用于防止恶意的全表更新或删除操作,本文主要介绍了mybatis-plus阻止全表更新与删除的实现,感兴趣的可以了解一下
    2023-12-12
  • Java并发编程之ThreadLocal详解

    Java并发编程之ThreadLocal详解

    今天给大家带来的是Java并发编程的相关知识,文中对ThreadLocal做了非常详细的分析及介绍,对小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • 关于JDK8升级17及springboot 2.x升级3.x详细指南

    关于JDK8升级17及springboot 2.x升级3.x详细指南

    这篇文章主要介绍了关于JDK8升级17及springboot 2.x升级3.x的相关资料,还讨论了JPA包路径从javax改为jakarta,以及Spring Boot版本升级和Redis配置调整等,需要的朋友可以参考下
    2025-01-01
  • Springboot mybais配置多数据源过程解析

    Springboot mybais配置多数据源过程解析

    这篇文章主要介绍了Springboot+mybais配置多数据源过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • mybatis if传入字符串数字踩坑记录及解决

    mybatis if传入字符串数字踩坑记录及解决

    这篇文章主要介绍了mybatis if传入字符串数字踩坑记录及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02

最新评论