angular ajax 下载流文件

2019-07-24  本文已影响0人  简陌刀丶阿吉
/**
   * 导出全周期模版
   * @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);
    });
  }
上一篇 下一篇

猜你喜欢

热点阅读