1. download() {
  2.  
  3. const token = localStorage.getItem('token');
  4.  
  5. let headers: HttpHeaders = new HttpHeaders();
  6.  
  7. headers = headers
  8.  
  9. .set('Authorization', 'Bearer ' + token);
  10.  
  11. const url = 'http://localhost:8764/api/v1/user/downLoadZipFile';
  12.  
  13. this.http.get(url, {headers: headers, observe: 'response', responseType: 'blob'}).subscribe(response => {
  14.  
  15. console.log(response);
  16.  
  17. console.log(response.headers.keys());
  18.  
  19. this.downloadFile(response);
  20.  
  21. }, (error: HttpErrorResponse) => {
  22.  
  23. console.log(error.error);
  24.  
  25. });
  26.  
  27. }
  28.  
  29. downloadFile(data: HttpResponse<Blob>) {
  30.  
  31. const file = new Blob([data.body], {type: 'application/zip'});
  32.  
  33. const a = document.createElement('a');
  34.  
  35. a.id = 'tempId';
  36.  
  37. document.body.appendChild(a);
  38.  
  39. a.download = 'haha.zip';
  40.  
  41. a.href = URL.createObjectURL(file);
  42.  
  43. a.click();
  44.  
  45. const tempA = document.getElementById('tempId');
  46.  
  47. if (tempA) {
  48.  
  49. tempA.parentNode.removeChild(tempA);
  50.  
  51. }
  52.  
  53. }
  54.  
  55. }
  1. var blob = new Blob([res], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});
  2. var objectUrl = URL.createObjectURL(blob);
  3. var a = document.createElement('a');
  4. document.body.appendChild(a);
  5. a.setAttribute('style', 'display:none');
  6. a.setAttribute('href', objectUrl);
  7. a.setAttribute('download', fileName);
  8. a.click();
  9. URL.revokeObjectURL(objectUrl);

通用下载代码JS:

  1. downloadFile(filePath: any) {
  2. this.meetingService.downloadFile(filePath, rtv => {
  3. if (rtv) {
  4. let _blob = new Blob([rtv]);
  5. let _filename = filePath.substring(filePath.lastIndexOf('_') + 1);
  6. if (window.navigator && window.navigator.msSaveOrOpenBlob) {
  7. window.navigator.msSaveOrOpenBlob(_blob, _filename);
  8. } else {
  9. let _link = document.createElement('a');
  10. let _url = window.URL.createObjectURL(_blob);
  11. document.body.appendChild(_link);
  12. _link.setAttribute('style', 'display:none');
  13. _link.href = _url;
  14. _link.download = _filename;
  15. _link.click();
  16. window.URL.revokeObjectURL(_url);
  17. _link.remove();
  18. }
  19. } else {
  20. alert('下载失败,请稍后重试!');
  21. }
  22. });
  23. }

参考文章:

https://www.cnblogs.com/liugang-vip/p/7016733.html

【angular5项目积累总结】文件下载的更多相关文章

  1. 【angular5项目积累总结】遇到的一些问题以及解决办法

    1.项目中字符串特别是\r\n,替换成br之后,在页面换行无法生效? 答:绑定元素 innerHTML. <div class="panel-body" [innerHTML ...

  2. 【angular5项目积累总结】消息订阅服务

    code import { Injectable } from '@angular/core'; import { Subject } from 'rxjs/Subject'; @Injectable ...

  3. 【angular5项目积累总结】侧栏菜单 navmenu

    View Code import { Component, OnInit } from '@angular/core'; import { HttpClient } from '@angular/co ...

  4. 【angular5项目积累总结】avatar组件

    View Code import { Component, HostListener, ElementRef } from '@angular/core'; import { Adal4Service ...

  5. 【angular5项目积累总结】breadcrumb面包屑组件

    view code <div class="fxs-breadcrumb-wrapper" aria-label="Navigation history" ...

  6. 【angular5项目积累总结】结合adal4实现http拦截器(token)

    import { Injectable } from '@angular/core'; import { HttpEvent, HttpInterceptor, HttpHandler, HttpRe ...

  7. 【angular5项目积累总结】文件上传

    <div class="form-group row"> <label class="col-sm-2 col-form-label"> ...

  8. 【angular5项目积累总结】自定义管道 OrderBy

    import { Injectable, Pipe } from '@angular/core'; @Pipe({ name: 'orderBy' }) @Injectable() export cl ...

  9. 【angular5项目积累总结】一些正则积累

    /^[1-9][0-9]{0,4}$/ /^[1-9][0-9]{0,4}(,[1-9][0-9]{0,4})*$/ /^([a-zA-Z0-9_\-])+\@(([a-zA-Z0-9\-])+\.) ...

随机推荐

  1. BitAdminCore框架更新日志20180522

    20180522更新内容 本次更新增加了excel导入导出示例,QuerySuite组件实现导出导出,用最少代码,做最多的事,代码就是如此简单. 计划修改内容 1.人脸登录功能需要重构,目前功能不完善 ...

  2. AJPFX的资金安全性

    AJPFX承诺保证客户资金安全,并严格按照英国的相关规章制度从事经营活动.客户资金存放于投资级银行的独立账户中.通过实行公司资产与客户资金分别保管,在发生无偿债能力的罕见情况下,客户可获退还独立存放资 ...

  3. python 神经网络包 NeuroLab

    neurolab模块相当于Matlab的神经网络工具箱(NNT) neurolab模块支持的网络类型: 单层感知机(single layer perceptron) 多层前馈感知机(Multilaye ...

  4. 【算法】Matrix - Tree 矩阵树定理 & 题目总结

    最近集中学习了一下矩阵树定理,自己其实还是没有太明白原理(证明)类的东西,但想在这里总结一下应用中的一些细节,矩阵树定理的一些引申等等. 首先,矩阵树定理用于求解一个图上的生成树个数.实现方式是:\( ...

  5. MySQL(分组、连表操作、备份数据库)

    day58 分组 参考:https://www.cnblogs.com/xp796/p/5262187.html select dept, max(salary) from department gr ...

  6. Windows 内核漏洞学习—空指针解引用

    原标题:Windows Kernel Exploitation – NullPointer Dereference 原文地址:https://osandamalith.com/2017/06/22/w ...

  7. mysql enterprise backup入门使用

    **************************************************************--1.全备******************************** ...

  8. java验证身份证合理性

    package com.tiantian.util; import java.util.Calendar;import java.util.HashMap;import java.util.Map;i ...

  9. jvm(2)类的初始化(一)

    [深入Java虚拟机]之三:类初始化 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码. 1,下面说的初始化主要是类变量的初始化,实例变量的初始化触发条件不同(一 ...

  10. call、apply、bind的异同

    一.call.apply.bind的异同 JavaScript中函数可以通过3种方法改变自己的this指向,它们是call.apply.bind.它们3个非常相似,但是也有区别.下面表格可以很直观看出 ...