6

I'm making a call to an API that gets blob data.

back end sends to me also file name in header.

My actual problem is that I can't get header from the api.

Here's my service.ts

public openFile(path) {
  let url='/download/';
  let pathFile= new HttpParams().set('pathFile', path);
  return this.httpClient.get(url,{params:pathFile, responseType: 'blob' });

and in component.ts I call the service. when I try to print the res.headers I get undefined in console.

openFile(path){
  this.creditPoliciesService.openFile(path).toPromise().then (data => {
    console.log("dataaaaaa",data.headers); // undefined
    var blob = new Blob([data], {type: 'application/pdf'}); 
    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
      window.navigator.msSaveOrOpenBlob(blob);
    }
    else {
      var fileURL = URL.createObjectURL(blob); 
      window.open(fileURL);
    }
  });
}

In the dev tool admin I get informations in response header but I'm not able to find them in the response variable.

infodev
  • 4,673
  • 17
  • 65
  • 138

1 Answers1

9

pass observe key with value of ‘response’ to get the complete response

getData() {
 this.http.get(this.url, { observe: 'response' }).subscribe(res => {
   this.headerProperty = res.headers.get('property name here');
 });
}
Fateh Mohamed
  • 20,445
  • 5
  • 43
  • 52
  • Should I import some modules ? – infodev May 02 '18 at 13:04
  • 2
    I added `{ observe: 'response' }` to my request , but I don't get all the header response items that I see in the browser devtool – infodev May 03 '18 at 09:00
  • I have resolved my problem by getting the information from the front end ( instead of the http request ) . but I have found this on github it may help further person https://github.com/angular/angular/issues/13226 – infodev May 03 '18 at 15:02