当前位置:   article > 正文

springboot从resource文件夹中下载文件模板注意事项_classpath 下载模板

classpath 下载模板
  1. @GetMapping({"/findTempalte/{fileName}"})
  2. public void exportInitTempalte(HttpServletResponse response, @PathVariable String fileName) {
  3. InputStream fis = null;
  4. ServletOutputStream toClient = null;
  5. try {
  6. String path = File.separator + "idmfiles" + File.separator + fileName + ".xlsx";
  7. ClassPathResource classPathResource = new ClassPathResource(path);
  8. fis = classPathResource.getInputStream();
  9. //在打成jar包后,可能会出现fis.available()=0的情况,导致下载文件为空白,所以不要
  10. //使用new byte[fis.available()],要直接使用new
  11. //byte[1024]或者使用相关工具类IOUtils.toByteArray(fis)
  12. //byte[] buffer = new byte[fis.available()];
  13. //fis.read(buffer);
  14. byte[] buffer = IOUtils.toByteArray(fis);
  15. response.addHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
  16. response.setContentType("application/octet-stream");
  17. toClient = response.getOutputStream();
  18. toClient.write(buffer, 0, buffer.length);
  19. toClient.flush();
  20. } catch (Exception var11) {
  21. var11.printStackTrace();
  22. } finally {
  23. this.closeStream(toClient, fis);
  24. }
  25. }
  26. private void closeStream(OutputStream os, InputStream inputStream) {
  27. if (os != null) {
  28. try {
  29. os.close();
  30. } catch (IOException var5) {
  31. this.log.error(" closeOutputStream error {}", var5.getMessage());
  32. }
  33. }
  34. if (inputStream != null) {
  35. try {
  36. inputStream.close();
  37. } catch (IOException var4) {
  38. this.log.error(" closeInputStream error {}", var4.getMessage());
  39. }
  40. }
  41. }

在打成jar包后,可能会出现fis.available()=0的情况,导致下载文件为空白,所以不要 
使用new byte[fis.available()],要直接使用new byte[1024]或者使用相关工具类IOUtils.toByteArray(fis)

不要使用:
byte[] buffer = new byte[fis.available()];
fis.read(buffer);

应该使用
byte[] buffer = IOUtils.toByteArray(fis);或者new byte[1024]

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号