解析Angular 5期间Http失败

时间:2018-07-17 02:59:43

标签: javascript angular http angular5 http-get

在Angular中解析期间接收到HTTP失败。目标是从api响应中下载csv文件

控制器:

downloadFile(data) {
const blob = new Blob([data], { type: 'text/csv' });
const url = window.URL.createObjectURL(blob);
window.open(url);
}

getFileDownload(): void {
this.iportalUploadService.getFileDownload(this.fileName).subscribe(data => {
  debugger;
  this.fileDownload = data;
  this.downloadFile(data);
});
}

服务:

 private fileDownloadUrl = 'file-transfer/validationErrorsCSV';

formHtppOptions(params): any {
    const httpOptions = {
      headers: { 'Application-Token': this.getToken()},
      params: params,
             };
    return httpOptions;
  }


 getFileDownload(fileName):  Observable<Object> {
    const baseUrl = this.getBaseUrl();
    return this.http.get<Object>(baseUrl + this.fileDownloadUrl, this.formHtppOptions({fileName: fileName}));
  }

以下是我收到的控制台错误 console error

响应格式照片 Response photo

2 个答案:

答案 0 :(得分:0)

您收到此错误,因为您的响应不是JSON格式。您正在尝试将其转换为对象,并且CSV文本无法解析为正确的json对象。这是您可能想要做的:

  getFileDownload(fileName):  Observable<any> {
    const baseUrl = this.getBaseUrl();
    return this.http.get(baseUrl + this.fileDownloadUrl, this.formHtppOptions({fileName: fileName})).pipe(map((data:any) => this.converter.ToJson(data)));
  }

通常,我有一个“转换器”服务来执行这种解析。您可以使用papa parse,也可以通过循环响应来解析自己。

更新:以下是手动解析响应的示例:http://blog.sodhanalibrary.com/2016/10/read-csv-data-using-angular-2.html

看看上面的博客文章。

答案 1 :(得分:0)

我通过在formhttpOtions中添加responseType:'text'解决了此问题。