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配置文件里可以配置对项目进行统一编码,但是部分文件可能不需要进行重新编码,只需过滤掉不需要编码的文件类型即可。

posted @ 2022-01-03 21:05  钟小嘿  阅读(1949)  评论(0编辑  收藏  举报