当使用`get` response

时间:2018-04-24 09:51:52

标签: angular typescript http download blob

我有一个互联网方法来下载带有数据的'合同'文件。 file.txt里面有一些文字。必需参数是:方法获取。参数需要在标头中发送。像这样POST

最后我可以下载我的合同,但我有一个问题,我无法下载正确的文字,我的文字转换为照片。

enter image description here

我尝试使用Blob,但我不明白如何将Blob转换为正确的文件文本或解决方案。 请按照我的代码: 我的服务代码:

  public download(id: string): Observable<Blob> {
    let params = new URLSearchParams();
    let headers = new Headers();
    headers.append('x-access-token', this.auth.getCurrentUser().token);
    headers.append('sale_id', id);
    headers.append('Content-Type', 'multipart/form-data');
    return this.http.get(Api.getUrl(Api.URLS.download), {
      headers: headers,
      responseType: ResponseContentType.Blob,
      search: params,
    })
      .map((res: Response) => {
        console.log(res.blob)
        console.log(res.text)
        return res.blob();
      })
  }

我的代码:

  download(id: string) {
   this.service.contract_download(id).subscribe(res=> {
          let data = new Blob([res], { type: 'text/plain;charset=utf-8' });
        FileSaver.saveAs(data, 'text.docx');
        console.log(blob)
        console.log(data)
      })

  }

请问,如何获取数据文件?我尝试了一些例子,但结果没有任何改变。请问我任何想法/解决方案,如何解决这个问题?

响应:

enter image description here

1 个答案:

答案 0 :(得分:0)

希望你能得到这个

 download(id: string) {
   this.service.contract_download(id).subscribe(response=> {
        let headers = response.headers();
    let blob = new Blob([response.data], {type: headers['content-type']});
     FileSaver.saveAs(blob, headers['x-filename']);
       console.log(blob)
        console.log(data)
      })

  }