angular ajax 下载流文件

/**
   * 导出全周期模版
   * @param paramMap proNo:项目编码,projectCycleVersion:项目周期版本
   * @param successFunc 成功消息回调函数
   * @param errorFunc 失败消息回调函数
   */
exportModal(paramMap) {
    // responseType: 'blob' 获取了文件的二进制流
    this.http.post('api/s01cross/b04/exportmonfinana', paramMap,
      {responseType: 'blob', observe: 'response'}).subscribe(data => {
      const link = document.createElement('a');
      const blob = new Blob([data.body], {type: 'application/vnd.ms-excel'});
      let fileName = data.headers.get('Content-Disposition').split(';')[1].split('filename=')[1];
      const fileNameUnicode = data.headers.get('Content-Disposition').split('filename*=')[1];
      // 当存在 filename* 时,取filename* 并进行解码(为了解决中文乱码问题)
      if (fileNameUnicode) {
        fileName = decodeURIComponent(fileNameUnicode.split('\'\'')[1]);
      }
      link.setAttribute('href', window.URL.createObjectURL(blob));
      link.setAttribute('download', fileName);
      link.style.visibility = 'hidden';
      document.body.appendChild(link);
      link.click();
      document.body.removeChild(link);
    });
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容