最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot下載docx文檔方式

 更新時(shí)間:2025年06月23日 09:09:36   作者:@窮且益堅(jiān),不墜青云之志  
這篇文章主要介紹了SpringBoot下載docx文檔方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBoot下載docx文檔

功能需求很簡(jiǎn)單:我想實(shí)現(xiàn)一個(gè)在線下載簡(jiǎn)歷docx文檔的功能

實(shí)現(xiàn)效果如下:點(diǎn)擊下載后,就出現(xiàn)下載的文檔

目前該方式有局限性只能下載微軟的word文檔,而wps的會(huì)下載失敗

一、具體代碼

使用的庫(kù)為 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>

實(shí)現(xiàn)思路:

(1)讀取簡(jiǎn)歷文件進(jìn)入輸入流 (輸入流讀取文件)

(2)利用 XWPFDocument 裝載 讀取的數(shù)據(jù)流,將其寫(xiě)入 響應(yīng)里面

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

        //設(shè)置響應(yīng)的信息
        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");
        //設(shè)置瀏覽器接受類型為流
        response.setContentType("application/octet-stream;charset=UTF-8");
        try {
            InputStream in = new FileInputStream(file);
            // 將文件寫(xiě)入輸入流
            OutputStream out = response.getOutputStream();
            if("docx".equals(extension) || "doc".equals(extension)) {
                //docx文件就以XWPFDocument創(chuàng)建
                XWPFDocument docx = new XWPFDocument(in);
                docx.write(out);
                docx.close();
            } else {
                //其他類型的文件,按照普通文件傳輸 如(zip、rar等壓縮包)
                int len;
                //一次傳輸1M大小字節(jié)
                byte[] bytes = new byte[1024];
                while ((len = in.read(bytes)) != -1) {
                    out.write(bytes  , 0 , len);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

二、前端如何下載

我使用最簡(jiǎn)單的方式:window.open(ulr)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot項(xiàng)目中使用docker進(jìn)行遠(yuǎn)程部署的實(shí)現(xiàn)

    springboot項(xiàng)目中使用docker進(jìn)行遠(yuǎn)程部署的實(shí)現(xiàn)

    本文主要介紹了在Spring Boot項(xiàng)目中使用Docker進(jìn)行遠(yuǎn)程部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • IDEA導(dǎo)出暫存區(qū)(Shelf)的代碼的完整過(guò)程

    IDEA導(dǎo)出暫存區(qū)(Shelf)的代碼的完整過(guò)程

    IDEA 有一個(gè)很好用的功能,Shelve Changes...,可以將代碼暫時(shí)存起來(lái),方便切換分支,或暫存代碼,先處理其他事情,本文就給大家介紹如何將暫存區(qū)的代碼,導(dǎo)出來(lái),導(dǎo)入到另一個(gè)項(xiàng)目或者另一臺(tái)電腦上,需要的朋友可以參考下
    2025-10-10
  • Hibernate基于ThreadLocal管理Session過(guò)程解析

    Hibernate基于ThreadLocal管理Session過(guò)程解析

    這篇文章主要介紹了Hibernate基于ThreadLocal管理Session過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java前后端分離的在線點(diǎn)餐系統(tǒng)實(shí)現(xiàn)詳解

    Java前后端分離的在線點(diǎn)餐系統(tǒng)實(shí)現(xiàn)詳解

    這是一個(gè)基于SpringBoot+Vue框架開(kāi)發(fā)的在線點(diǎn)餐系統(tǒng)。首先,這是一個(gè)前后端分離的項(xiàng)目。具有一個(gè)在線點(diǎn)餐系統(tǒng)該有的所有功能,感興趣的朋友快來(lái)看看吧
    2022-01-01
  • Mybatis使用@param注解四種情況解析

    Mybatis使用@param注解四種情況解析

    這篇文章主要介紹了Mybatis使用@param注解四種情況解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • kafka生產(chǎn)者和消費(fèi)者的javaAPI的示例代碼

    kafka生產(chǎn)者和消費(fèi)者的javaAPI的示例代碼

    這篇文章主要介紹了kafka生產(chǎn)者和消費(fèi)者的javaAPI的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • JAVA三種攔截方式詳解(原生過(guò)濾器Filter、springMVC攔截器、aop切面)

    JAVA三種攔截方式詳解(原生過(guò)濾器Filter、springMVC攔截器、aop切面)

    在Java開(kāi)發(fā)中方法攔截是一種常見(jiàn)的技術(shù),可以用于在方法執(zhí)行前后添加額外的邏輯或修改方法的行為,這篇文章主要給大家介紹了關(guān)于JAVA三種攔截方式的相關(guān)資料,文中介紹的方式分別是原生過(guò)濾器Filter、springMVC攔截器、aop切面,需要的朋友可以參考下
    2024-05-05
  • idea2019.2安裝MybatisCodeHelper插件的超詳細(xì)教程

    idea2019.2安裝MybatisCodeHelper插件的超詳細(xì)教程

    這篇文章主要介紹了idea2019.2安裝MybatisCodeHelper插件的教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java設(shè)計(jì)模式之建造者模式的示例詳解

    Java設(shè)計(jì)模式之建造者模式的示例詳解

    建造者模式,是一種對(duì)象構(gòu)建模式 它可以將復(fù)雜對(duì)象的建造過(guò)程抽象出來(lái),使這個(gè)抽象過(guò)程的不同實(shí)現(xiàn)方法可以構(gòu)造出不同表現(xiàn)的對(duì)象。本文將通過(guò)示例講解建造者模式,需要的可以參考一下
    2022-02-02
  • 搭建maven私有倉(cāng)庫(kù)的方法實(shí)現(xiàn)

    搭建maven私有倉(cāng)庫(kù)的方法實(shí)現(xiàn)

    Maven是一個(gè)流行的Java項(xiàng)目管理工具,它可以幫助我們管理項(xiàng)目的構(gòu)建、報(bào)告和文檔,本文主要介紹了搭建maven私有倉(cāng)庫(kù)的方法實(shí)現(xiàn),感興趣的可以了解一下
    2023-05-05

最新評(píng)論

大宁县| 阳朔县| 莒南县| 安宁市| 合山市| 鄂托克旗| 儋州市| 呼图壁县| 饶河县| 龙口市| 车险| 航空| 惠来县| 全州县| 同心县| 苍梧县| 辽宁省| 临江市| 公主岭市| 金塔县| 浙江省| 汕头市| 长阳| 临沭县| 商丘市| 崇州市| 香港 | 湘阴县| 洛浦县| 阳泉市| 纳雍县| 寿光市| 桦甸市| 连江县| 大荔县| 南投县| 潞西市| 贵港市| 天津市| 通河县| 松潘县|