Javascript 使用responseType Blob时CSV将保存为[Object Object],下载文件时一起观察响应?

Javascript 使用responseType Blob时CSV将保存为[Object Object],下载文件时一起观察响应?,javascript,angular,angular2-observables,Javascript,Angular,Angular2 Observables,我已经用angular编写了代码(从Stackoverflow复制而来),用于从后端下载blob(CSV)文件,它工作得非常好。下面的代码工作正常。当我只使用{responseType:'blob'作为'json'}时。它正在下载,如果我们打开文件,我们可以看到文件的所有标题和内容 **services.ts file** exportCSVFromDB(filter:any) { return this.httpClient.post(URL+"report/exportToCsv

我已经用angular编写了代码(
从Stackoverflow复制而来
),用于从后端下载blob(CSV)文件,它工作得非常好。下面的代码工作正常。当我只使用
{responseType:'blob'作为'json'}
时。它正在下载,如果我们打开文件,我们可以看到文件的所有标题和内容

**services.ts file**

exportCSVFromDB(filter:any) {
return this.httpClient.post(URL+"report/exportToCsv", filter, 
{responseType: 'blob' as 'json'})
.pipe(map((response: any) => {
  return response;
}
));
}

但是我想按文件名保存该文件,该文件来自服务器。服务器在响应头中发送文件名,以便读取我使用的
service.ts
文件中的响应头。同样在httpOptions中,观察“Response”作为“Response”

return this.httpClient.post(URL+"unified-report/taskreport/exportToCsv", filter, 
{observe: 'response' as 'response',responseType: 'blob' as 'json'})...other code
现在在组件中,我正在读取文件名:

  let contentDisposition = response.headers.get('content-disposition');
  let filename = contentDisposition.split(';')[1].split('filename')[1].split('=')[1].trim();
所以现在这也可以正常工作了,文件被保存为来自服务器的名称。 但是,如果我打开CSV,数据将像
[Object Object]
一样保存,请参见附件


如果
response
已经是一个Blob(或一个文件),为什么要再次尝试将其包装成一个新的Blob?(尽管给定的
newblob()
调用了它的toString方法,但它肯定不是一个Blob。)
  let contentDisposition = response.headers.get('content-disposition');
  let filename = contentDisposition.split(';')[1].split('filename')[1].split('=')[1].trim();