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

SpringBoot如何實(shí)現(xiàn)文件下載

 更新時(shí)間:2023年11月06日 09:11:50   作者:zhangvalue  
這篇文章主要介紹了SpringBoot如何實(shí)現(xiàn)文件下載問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBoot文件下載

在寫java 的文件下載的時(shí)候一直拋出異常

getOutputStream() has already been called for this response

直到使用了下面的方法

 /**
     * 稿源周報(bào)excel表格下載
     * @return
     */
 
    @RequestMapping(value = "/downExcel", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
    @ResponseBody
    public String downExcel(HttpServletResponse response) throws UnsupportedEncodingException {
        LocalDate end = LocalDate.now();
        LocalDate start = end.minusDays(14);
        String filename = "稿源抓取周報(bào)-" + end.format(DateTimeFormatter.ISO_DATE) + ".xlsx";
        String filepath = "files/" + filename;
        writeExcelFile(start, end, filepath);
        // 如果文件名不為空,則進(jìn)行下載
        if (filename != null) {
            File file = new File(filepath);
            // 如果文件存在,則進(jìn)行下載
            if (file.exists()) {
                // 配置文件下載
                response.setHeader("content-type", "application/octet-stream");
                response.setContentType("application/octet-stream");
                // 下載文件能正常顯示中文
                response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
                // 實(shí)現(xiàn)文件下載
                byte[] buffer = new byte[1024];
                FileInputStream fis = null;
                BufferedInputStream bis = null;
                try {
                    fis = new FileInputStream(file);
                    bis = new BufferedInputStream(fis);
                    OutputStream os = response.getOutputStream();
                    int i = bis.read(buffer);
                    while (i != -1) {
                        os.write(buffer, 0, i);
                        i = bis.read(buffer);
                    }
                    System.out.println("Download  successfully!");
                    return "successfully";
 
                } catch (Exception e) {
                    System.out.println("Download  failed!");
                    return "failed";
 
                } finally {
                    if (bis != null) {
                        try {
                            bis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    if (fis != null) {
                        try {
                            fis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
        return "";
    }

后來又出現(xiàn)了 一個(gè)問題就是后臺(tái)不拋出異常,也不出現(xiàn)下載的提示發(fā)現(xiàn)了以下問題

如果要用ajax 發(fā)送的話,則瀏覽器沒有任何反應(yīng)  因?yàn)閍jax返回的格式是  字符的格式 

  $.ajax({
       url:"/down/downExcel",
       type:"GET",
       dataType:"json",
       success:function(result){
}}); 

換成:

window.location.href="/down/downExcel" rel="external nofollow" ;

OK!

總結(jié)

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

相關(guān)文章

  • MyBatis使用自定義TypeHandler轉(zhuǎn)換類型的實(shí)現(xiàn)方法

    MyBatis使用自定義TypeHandler轉(zhuǎn)換類型的實(shí)現(xiàn)方法

    這篇文章主要介紹了MyBatis使用自定義TypeHandler轉(zhuǎn)換類型的實(shí)現(xiàn)方法,本文介紹使用TypeHandler 實(shí)現(xiàn)日期類型的轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Java計(jì)算對(duì)象大小的方法詳解

    Java計(jì)算對(duì)象大小的方法詳解

    在Java應(yīng)用程序的性能優(yōu)化場(chǎng)景中,時(shí)常需要考慮Java對(duì)象的大小,以便觀測(cè),本文為大家介紹了常用的Java計(jì)算對(duì)象大小的方法,感興趣的可以了解下
    2025-01-01
  • mybatis批量更新與插入方式

    mybatis批量更新與插入方式

    這篇文章主要介紹了mybatis批量更新與插入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 配置hadoop環(huán)境mapreduce連接不上hdfs解決

    配置hadoop環(huán)境mapreduce連接不上hdfs解決

    這篇文章主要為大家介紹了配置hadoop環(huán)境mapreduce連接不上hdfs解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Maven解決jar包版本沖突的4種方法詳解

    Maven解決jar包版本沖突的4種方法詳解

    這篇文章主要給大家介紹了關(guān)于Maven解決jar包版本沖突的4種方法代碼,maven工程要導(dǎo)入jar包的坐標(biāo),就必須要考慮解決jar包沖突,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Spring集成事務(wù)代碼實(shí)例

    Spring集成事務(wù)代碼實(shí)例

    這篇文章主要介紹了Spring集成事務(wù)代碼實(shí)例,pring事務(wù)的本質(zhì)其實(shí)就是數(shù)據(jù)庫(kù)對(duì)事務(wù)的支持,使用JDBC的事務(wù)管理機(jī)制,就是利用java.sql.Connection對(duì)象完成對(duì)事務(wù)的提交,需要的朋友可以參考下
    2023-10-10
  • SpringBoot整合RabbitMQ處理死信隊(duì)列和延遲隊(duì)列

    SpringBoot整合RabbitMQ處理死信隊(duì)列和延遲隊(duì)列

    這篇文章將通過示例為大家詳細(xì)介紹SpringBoot整合RabbitMQ時(shí)如何處理死信隊(duì)列和延遲隊(duì)列,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-05-05
  • Java高頻面試題之海量數(shù)據(jù)處理分析

    Java高頻面試題之海量數(shù)據(jù)處理分析

    海量信息處理日益成為當(dāng)前程序員筆試面試中一個(gè)新的亮點(diǎn)。硬件擴(kuò)容是難滿足海量數(shù)據(jù)處理需要的,如何利用現(xiàn)有條件進(jìn)行海量信息處理?本文就來為大家解答一下
    2022-10-10
  • System.getProperty(user.dir)定位問題解析

    System.getProperty(user.dir)定位問題解析

    System.getProperty(user.dir) 獲取的是啟動(dòng)項(xiàng)目的容器位置,用IDEA是項(xiàng)目的根目錄,部署在tomcat上是tomcat的啟動(dòng)路徑,即tomcat/bin的位置,這篇文章主要介紹了System.getProperty(user.dir)定位問題,需要的朋友可以參考下
    2023-05-05
  • java多線程-讀寫鎖原理

    java多線程-讀寫鎖原理

    本文主要介紹java多線程的知識(shí),這里整理了相關(guān)資料及簡(jiǎn)單示例代碼,有興趣的小伙伴可以參考下
    2016-09-09

最新評(píng)論

若羌县| 忻州市| 通海县| 南宁市| 黔东| 苗栗市| 罗平县| 海宁市| 庄河市| 屏南县| 肥城市| 晋城| 筠连县| 阿瓦提县| 洛浦县| 平乐县| 苏尼特左旗| 东丽区| 壶关县| 奈曼旗| 扎兰屯市| 定日县| 板桥市| 宁夏| 海淀区| 岳普湖县| 体育| 寿光市| 托克托县| 家居| 叶城县| 澄城县| 乐山市| 宁海县| 类乌齐县| 北碚区| 宿迁市| 临朐县| 化德县| 鹤庆县| 仙桃市|