当前位置:   article > 正文

后端读取excel返回文件流给前端下载_接口返回excell文件流,前端下载

接口返回excell文件流,前端下载

直接上代码

后端代码:

  1. @GetMapping(value = "/excel")
  2. @ApiOperation(value = "模板下载", httpMethod = "GET")
  3. public void download(HttpServletRequest request,HttpServletResponse response) {
  4. try {
  5. String path = importExcelModelFilePath + "外区转入函询数据导入模板.xlsx";
  6. // CreateTxt.downLoadFile(path, response, false);
  7. File file = new File(path);
  8. if (!file.exists()) {
  9. response.sendError(404, "File not found!");
  10. } else {
  11. // 取得文件名。
  12. String filename = file.getName();
  13. // 以流的形式下载文件。
  14. InputStream fis = new BufferedInputStream(new FileInputStream(path));
  15. byte[] buffer = new byte[fis.available()];
  16. fis.read(buffer);
  17. fis.close();
  18. // 清空response
  19. // JSONP 解决跨域问题
  20. response.reset();
  21. response.addHeader("Access-Control-Allow-Origin", "*");
  22. response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
  23. response.addHeader("Access-Control-Allow-Headers", "Content-Type");
  24. // 设置response的Header
  25. response.setHeader("Content-Disposition", "attachment;filename="
  26. + new String(filename.getBytes(),"iso-8859-1"));
  27. response.addHeader("Content-Length", "" + file.length());
  28. OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
  29. response.setContentType("application/octet-stream");
  30. //http://www.ruanyifeng.com/blog/2016/04/cors.html 跨域详情介绍
  31. toClient.write(buffer);
  32. toClient.flush();
  33. toClient.close();
  34. }
  35. } catch (IOException e) {
  36. e.printStackTrace();
  37. }
  38. }

前端代码:

  1. async download() {
  2. let errorMsg
  3. let blobStream = await download().catch((err) => {
  4. console.log('exportExcelErr:', err)
  5. errorMsg = err
  6. })
  7. debugger
  8. if (blobStream.size === 0) {
  9. this.$message.error('响应数据错误...' + errorMsg)
  10. return
  11. }
  12. //this.streamDownload(blobStream, '默认文件.xlsx')
  13. this.downloadFile(blobStream,'函询数据模板.xlsx')
  14. },
  15. // URL.createObjectURL() 静态方法会创建一个DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的document绑定
  16. downloadFile:function(data,fileName){
  17. // data为blob格式
  18. var blob = new Blob([data]);
  19. var downloadElement = document.createElement('a');
  20. var href = window.URL.createObjectURL(blob);
  21. downloadElement.href = href;
  22. downloadElement.download = fileName;
  23. document.body.appendChild(downloadElement);
  24. downloadElement.click();
  25. document.body.removeChild(downloadElement);
  26. window.URL.revokeObjectURL(href);
  27. },

 

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

闽ICP备14008679号