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

SpringBoot下載Excel文件時,報錯文件損壞的解決方案

 更新時間:2021年06月23日 14:48:38   作者:小樓夜聽雨QAQ  
這篇文章主要介紹了SpringBoot下載Excel文件時,報錯文件損壞的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot下載Excel文件文件損壞

我把模板文件放在了resources目錄下

maven插件打包項目的時候,默認會壓縮resources目錄下的文件。

服務(wù)器讀取的文件流來自于壓縮后的文件,而返回給瀏覽器時,瀏覽器把他當作正常的文件解析,自然不能得到正確的結(jié)果。

解決方案:

配置一下maven插件,打包的時候不要壓縮模板文件,排除拓展名為xlsx的文件。

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <nonFilteredFileExtensions>
                        <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
            </plugin>

即使這里配置了utf-8,也會出現(xiàn)文件的中文名亂碼的情況。

想徹底解決亂碼問題,我們還需要在代碼中需要做一些處理。

下面貼一個工具類,看大概思路即可。

package com.zikoo.czjlk.utils; 
import com.zikoo.czjlk.exception.EmServerError;
import com.zikoo.czjlk.exception.EmServerException; 
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder; 
public class FileUtils { 
    public static void download(HttpServletResponse response, String filePath, String fileName){
 
        try {
            response.setHeader("content-type", "application/octet-stream");
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName,"UTF-8"));
 
            InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath);
 
            writeBytes(is, response.getOutputStream());
        }catch (Exception e) {
            throw new EmServerException(EmServerError.FILE_OPERATION_ERROR);
        }
    }
 
    private static void writeBytes(InputStream is, OutputStream os) {
        try {
            byte[] buf = new byte[1024];
            int len = 0;
            while((len = is.read(buf))!=-1)
            {
                os.write(buf,0,len);
            }
        }catch (Exception e) {
            throw new EmServerException(EmServerError.FILE_OPERATION_ERROR);
        }finally {
            if(is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
 
            if(os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

在SpringBoot項目中,下載文件出現(xiàn)異常:

SpringBoot下載文件,出現(xiàn)異常:Could not find acceptable representation

在這里插入圖片描述

接口定義為:

public XResponse<Void> exportProject(@PathVariable("projectId") String projectId,
         HttpServletResponse response) throws Exception 

原因:在下載文件時,接口不能有返回值

將接口定義修改為:

public void exportProject(@PathVariable("projectId") String projectId,
         HttpServletResponse response) throws Exception 

此時下載就沒有異常信息了。

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

相關(guān)文章

  • Spring中@Conditional注解用法詳解

    Spring中@Conditional注解用法詳解

    這篇文章主要介紹了Spring中@Conditional注解用法詳解,@Conditional是Spring4版本新提供的一種注解,它的作用是按照設(shè)定的條件進行判斷,把滿足判斷條件的bean注冊到Spring容器,需要的朋友可以參考下
    2023-11-11
  • java異步上傳圖片示例

    java異步上傳圖片示例

    這篇文章主要介紹了java異步上傳圖片示例,需要的朋友可以參考下
    2014-02-02
  • 2019年最新Java學習路線圖

    2019年最新Java學習路線圖

    不管你是不懂電腦的小白,還是已經(jīng)步入開發(fā)的大牛,這套路線路絕對不容錯過,路線圖的宗旨就是分享,專業(yè),便利,讓喜愛Java的人,都能平等的學習,感興趣的同學可以了解一下
    2019-03-03
  • spring配置文件加密方法示例

    spring配置文件加密方法示例

    這篇文章主要介紹了spring配置文件加密方法示例,簡單介紹了什么是配置文件,然后分享了在實際生產(chǎn)環(huán)境中,對配置文件不允許出現(xiàn)明文用戶名及密碼等信息需求的Java實現(xiàn)代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 從application.properties配置文件獲取的漢字亂碼的解決方法

    從application.properties配置文件獲取的漢字亂碼的解決方法

    平時從配置文件各種讀取配置參數(shù)都正常,但是有時候放了個中文就亂碼,你肯定試過網(wǎng)上好多方法,都沒解決,那么來看下面,恭喜你終于找這里了,本文給大家介紹了從application.properties配置文件獲取的漢字亂碼的解決方法,需要的朋友可以參考下
    2024-03-03
  • java實現(xiàn)畫圖板功能

    java實現(xiàn)畫圖板功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)畫圖板功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 日志模塊自定義@SkipLogAspect注解跳過切面的操作方法

    日志模塊自定義@SkipLogAspect注解跳過切面的操作方法

    文章介紹了一個自定義注解@SkipLogAspect,用于在日志模塊中跳過特定方法的日志切面,這個注解可以用于需要避免大對象轉(zhuǎn)換為JSON時導致的OOM問題,文章還提供了注解的實現(xiàn)代碼以及一個測試示例,展示了如何在控制器中使用該注解來跳過日志切面,感興趣的朋友一起看看吧
    2025-02-02
  • java實現(xiàn)電腦定時關(guān)機的方法

    java實現(xiàn)電腦定時關(guān)機的方法

    這篇文章主要介紹了java實現(xiàn)電腦定時關(guān)機的方法,首先通過java注冊windows服務(wù)程序,再以一個簡單的java程序?qū)崿F(xiàn)定時關(guān)機的功能,非常具有實用價值,需要的朋友可以參考下
    2014-11-11
  • 淺談一下RabbitMQ、Kafka和RocketMQ消息中間件對比

    淺談一下RabbitMQ、Kafka和RocketMQ消息中間件對比

    這篇文章主要介紹了淺談一下RabbitMQ、Kafka和RocketMQ消息中間件對比,消息中間件屬于分布式系統(tǒng)中一個字系統(tǒng),關(guān)注于數(shù)據(jù)的發(fā)送和接收,利用高效可靠的異步信息傳遞機制對分布式系統(tǒng)中的其余各個子系統(tǒng)進行集成,需要的朋友可以參考下
    2023-05-05
  • 如何使用BeanUtils.copyProperties進行對象之間的屬性賦值

    如何使用BeanUtils.copyProperties進行對象之間的屬性賦值

    這篇文章主要介紹了使用BeanUtils.copyProperties進行對象之間的屬性賦值,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05

最新評論

仁布县| 昂仁县| 巧家县| 满洲里市| 全州县| 鹤壁市| 屏山县| 周至县| 株洲县| 和田县| 伊吾县| 长沙县| 璧山县| 福安市| 文山县| 天祝| 新乡县| 宁阳县| 丰原市| 青铜峡市| 东丰县| 淄博市| 阜宁县| 古田县| 辽阳县| 大城县| 探索| 澄城县| 金川县| 会理县| 溆浦县| 静乐县| 闵行区| 循化| 马尔康县| 恩施市| 连州市| 信宜市| 白山市| 茂名市| 根河市|