在項目中通常會用到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配置文件里可以配置對項目進行統一編碼,但是部分文件可能不需要進行重新編碼,只需過濾掉不需要編碼的文件類型即可。
