java 从resource下载excel打不开

java 复制代码
    @GetMapping("/download/template")
    public void template(HttpServletResponse response) throws IOException {
        ServletOutputStream outputStream = response.getOutputStream();
        InputStream inputStream = null;
        try {
    //从resource获取excel文件流
            inputStream = getClass().getClassLoader().getResourceAsStream("批量上传产品模板.xlsx");
            String fileName = "批量上传产品模板.xlsx";
            response.reset();
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
            response.setHeader("Content-Length", String.valueOf(inputStream.available()));
            IoUtil.copy(inputStream, outputStream);
        } catch (Exception e) {
            e.printStackTrace();
            throw new ServiceException("下载失败");
        } finally {
            inputStream.close();
            outputStream.flush();
            outputStream.close();
        }
    }

由于Java项目在编译/Maven打包Excel等资源文件时,使用了Maven的filter,导致打包后的Excel文件乱码或者损坏。

需要再maven添加插件

XML 复制代码
<build>
   <plugins>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
         <configuration>
            <encoding>UTF-8</encoding>
            <nonFilteredFileExtensions>
               <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
               <nonFilteredFileExtension>xls</nonFilteredFileExtension>
            </nonFilteredFileExtensions>
         </configuration>
      </plugin>
   </plugins>
   <resources>
      <resource>
         <directory>src/main/resources</directory>
         <filtering>true</filtering>
      </resource>
   </resources>
</build>
相关推荐
前端 贾公子2 分钟前
uniapp 小程序获取后端的二进制 保存到手机相册
java·前端·javascript
希望永不加班3 分钟前
Spring Boot 统一异常处理:从混乱到优雅的实用方案
java·spring boot·后端·spring·状态模式
学习要积极7 分钟前
Spring 组件工具类-FFmpegUtils
java·后端·spring
洋不写bug7 分钟前
操作系统管理:进程解析
java
liurunlin8888 分钟前
Tomcat 都有哪些核心组件
java·tomcat·firefox
滴滴答滴答答9 分钟前
机考刷题之 13 LeetCode 1004 最大连续1的个数 III
java·算法·leetcode
逆境不可逃12 分钟前
【从零入门23种设计模式17】行为型之中介者模式
java·leetcode·microsoft·设计模式·职场和发展·中介者模式
鸽鸽程序猿20 分钟前
【JavaEE】【SpringAI】聊天模型
java·java-ee
韭菜张师傅20 分钟前
Ceph环境完全重置指南:彻底清理集群环境
java·网络·ceph
SunnyDays101121 分钟前
使用 Java 实现 Word 文档水印自动化(全面指南)
java·添加水印·word文档