typescript - Ladda binär fil i Angular 5


Jag arbetar i Angular 5 för att integrera flatbuffers-svar med mitt API-anrop. Jag försöker ladda en binär fil med HttpClient i Angular 5.

Jag har försökt med nedanstående kod för att få byte-data i Uint8Array. Har också försökt med Blob men det fungerar inte.

let apiUrl = "./assets/test.bin";
const headers = {
  headers: new HttpHeaders({responseType: "application/octet-stream"})
};

let data : Observable<Uint8Array> = this.http.get<Uint8Array>(apiUrl, headers);
data.subscribe( (response: Uint8Array) => {
  const data = response;
  // console.log(data); 
  console.log("successful");

  return data;
}, (error : HttpErrorResponse)=> {
  console.log(error.error.text);      
});

Binärfil

FBS Genererad TS-fil

Svar #1

Prova något som:

let apiUrl = "./assets/test.bin";
const headers = {responseType: "blob"};

let data : Observable<Blob> = this.http.get<Blob>(apiUrl, headers);
data.subscribe( (response: Blob) => {
  const data = response;
  console.log(data); 
}, (error : HttpErrorResponse)=> {
  console.log(error.error.text);      
});

Svar #2

Svaret som ges av @sabithpocker skulle fungera om header-objektet var korrekt. På grund av felaktig header tolkar Angulars http-modul det som JSON. Den korrekta headern skulle se ut så här:

const headers = {
  headers: new HttpHeaders({
     'Accept':'blob'
  }),
  'responseType': 'blob' as 'json'
 }