Http获取附件

时间:2018-04-12 10:35:37

标签: angular

我正在尝试获取ZIP文件(通常通过按钮单击将浏览器用户用作文件)。 在Chrome网络中,HTTP请求可以正常显示。 但是HttpClient.get函数返回错误。 这是调用函数代码

const userUri = this.userEnv + 'api/Upload/Download?fileID=' + fileIDResponse;
const userHttpOptions = {
  headers: new HttpHeaders({
    'Authorization': 'Basic ' + this.authToken,
    responseType: 'blob'
  })
};
this.http.get(userUri,
  userHttpOptions).subscribe(fileResponse => console.log(fileIDResponse),
    fileError => console.log(fileError)
  );

开发工具中的请求标头 - >网络,提供Status Code: 200 OK

  

回复到控制台的fileError说   SyntaxError:位于0的JSON中的意外标记P.    在JSON.parse()    在XMLHttpRequest.onLoad(webpack-internal:///./node_modules/@angular/common/esm5/http.js:2291:51)

如何修改代码以提供ResponseType?

最诚挚的问候, 维纳亚克

1 个答案:

答案 0 :(得分:1)

const userHttpOptions = {
  headers: new HttpHeaders({
    'Authorization': 'Basic ' + this.authToken,
    responseType: 'blob'
  })
};

responseType本身就是一个选项。它不是HTTP请求标头。你应该把它作为一个选项,而不是标题。

const userHttpOptions = {
  headers: new HttpHeaders({
    'Authorization': 'Basic ' + this.authToken
  }),
  responseType: 'blob'
};

据推测,这就是Angular将响应数据误解为JSON的原因。