当前位置:   article > 正文

读取resources下的文件,并原封不动返回前端_vue inputstreamresource返回给前端

vue inputstreamresource返回给前端

备注:controller层一定要用post!!!!!!post!!!!post!!!!因为我喜欢post

打开文件情况下会在res下生成$开头的同名文件

备注:以~$开头的文档是word的自我保护程序,其目的是为了防止正在编辑的文档信息因为意外情况关闭而丢失。(这是我在备注之后,研究了研究加的。get好像也没事)

用的时候,filename改为自己res下tamplet下的文件名.xlsx就行了,其他都不用动。、

现在我直接C了代码,改文件名,全部测试成功

image.png

  1. /**
  2. * * 基于res下xlsx读取文件并传输给前端
  3. * @param response
  4. */
  5. @Override
  6. public void eventUploadTemplateQuickTrackingAtResources(HttpServletResponse response) {
  7. String fileName = "EventUploadTemplate_QuickTracking.xlsx";
  8. //读取文件
  9. try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("template/" + fileName);
  10. ServletOutputStream servletOutputStream = response.getOutputStream()) {
  11. if (inputStream == null) {
  12. throw new BusinessException("模板文件不存在");
  13. }
  14. //设置响应
  15. EasyExelUtil.setResponse(response, fileName);
  16. IOUtils.copy(inputStream, servletOutputStream);
  17. response.flushBuffer();
  18. } catch (IOException e) {
  19. log.error("下载模板文件错误", e);
  20. throw new BusinessException("下载模板文件错误");
  21. }
  22. }
  23. }
  1. public static HttpServletResponse setResponse(HttpServletResponse response, String fileName) {
  2. response.setContentType("application/vnd.ms-excel");
  3. response.setCharacterEncoding("UTF-8");
  4. try {
  5. response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
  6. } catch (UnsupportedEncodingException e) {
  7. log.error("编码设置异常");
  8. throw new BusinessException("编码设置异常");
  9. }
  10. return response;
  11. }

  1. //参考
  2. //备注:如使用此版本,文件名字及相关resp参数(可能会有问题,显示为resp)需要改为我上面代码
  3. @Slf4j
  4. @RestController
  5. public class TestController {
  6. @Autowired
  7. private ResourceLoader resourceLoader;
  8. /**
  9. * 实现方式1
  10. * @param response
  11. * @param request
  12. */
  13. @ApiOperation("下载模板")
  14. @GetMapping("/downloadTemplate")
  15. public void downloadTemplate(HttpServletResponse response, HttpServletRequest request) {
  16. InputStream inputStream = null;
  17. ServletOutputStream servletOutputStream = null;
  18. try {
  19. String filename = "excel导入模板.xlsx";
  20. String path = "template/test.xlsx";
  21. Resource resource = resourceLoader.getResource("classpath:"+path);
  22. response.setContentType("application/vnd.ms-excel");
  23. response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
  24. response.addHeader("charset", "utf-8");
  25. response.addHeader("Pragma", "no-cache");
  26. String encodeName = URLEncoder.encode(filename, StandardCharsets.UTF_8.toString());
  27. response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeName + "\"; filename*=utf-8''" + encodeName);
  28. inputStream = resource.getInputStream();
  29. servletOutputStream = response.getOutputStream();
  30. IOUtils.copy(inputStream, servletOutputStream);
  31. response.flushBuffer();
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. } finally {
  35. try {
  36. if (servletOutputStream != null) {
  37. servletOutputStream.close();
  38. }
  39. if (inputStream != null) {
  40. inputStream.close();
  41. }
  42. } catch (Exception e) {
  43. e.printStackTrace();
  44. }
  45. }
  46. }
  47. /**
  48. * 实现方式2
  49. * @param response
  50. * @param request
  51. * @throws IOException
  52. */
  53. @ApiOperation("下载模板")
  54. @GetMapping("/downloadTemplate1")
  55. public void downloadTemplate1(HttpServletResponse response, HttpServletRequest request) throws IOException {
  56. ClassPathResource classPathResource = new ClassPathResource("template/test.xlsx");
  57. InputStream inputStream = classPathResource.getInputStream();
  58. ServletOutputStream servletOutputStream = null;
  59. try {
  60. String filename = "excel导入模板.xlsx";
  61. response.setContentType("application/vnd.ms-excel");
  62. response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
  63. response.addHeader("charset", "utf-8");
  64. response.addHeader("Pragma", "no-cache");
  65. response.setHeader("Content-Disposition", "attachment;fileName=" + new String(filename.getBytes(), StandardCharsets.ISO_8859_1) + ".xlsx");
  66. servletOutputStream = response.getOutputStream();
  67. IOUtils.copy(inputStream, servletOutputStream);
  68. response.flushBuffer();
  69. } catch (Exception e) {
  70. log.error("下载模板文件错误",e);
  71. e.printStackTrace();
  72. } finally {
  73. try {
  74. if (servletOutputStream != null) {
  75. servletOutputStream.close();
  76. }
  77. if (inputStream != null) {
  78. inputStream.close();
  79. }
  80. } catch (Exception e) {
  81. e.printStackTrace();
  82. }
  83. }
  84. }
  85. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/815897
推荐阅读
相关标签
  

闽ICP备14008679号