SpringBoot下載Excel文件無法打開


在項目中通常會用到excel模板下載,但是在下載后卻無法打開,下載代碼如下:

@GetMapping("/test")
    public void test(HttpServletResponse response) throws IOException {
        String fileName = "學生信息導入模板.xlsx";
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("template/" + fileName);
        response.setHeader("Access-Control-Expose-Headers", "content-disposition");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/octet-stream");
        response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
        int len = 0;
        byte bytes[] = new byte[1024];
        OutputStream out = response.getOutputStream();
        while ((len = in.read(bytes)) > 0) {
            out.write(bytes, 0, len);
        }
        in.close();
        out.close();
    }

文件存放位置:

下載后打開,顯示錯誤

在pom中添加以下代碼即可解決。

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

主要原因是maven在打包項目的時候pom.xml配置文件里可以配置對項目進行統一編碼,但是部分文件可能不需要進行重新編碼,只需過濾掉不需要編碼的文件類型即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM