Home > Net >  Angular how to get file from API
Angular how to get file from API

Time:12-14

I have API that returns PDF file, but in Angular when I call it it gives me this error

Http failure during parsing for http://localhost:1234/hebaback/public/api/download-report-20
error: SyntaxError: Unexpected token % in JSON at position 0 at JSON.parse (<anonymous>) at XMLHtt…, text: '%PDF-1.3\n%�߬�\n3 0 obj\n<</Type /Page\n/Parent 1 0 R\n…1728F9DC34CF5EC66FE> ]\n>>\nstartxref\n2887591\n%%EOF'

the function is simple

downloadReport(id: any): Observable<any> {
    return this._HttpClient.get(`http://localhost:1234/hebaback/public/api/download-report-${id}`)
}

I am sure that the error is from angular because I tried the API in postman and it works well

CodePudding user response:

You need to pass the responseType in the request options for Angular HttpClient to correctly parse the response. By default, Angular expects a JSON response, and hence, you're getting this error.

If server is returning blob then add it in the responseType. It also supports text and arrayBuffer for more flexibility, so configure the responseType accordingly.

return this._HttpClient.get(`http://localhost:1234/hebaback/public/api/download-report-${id}`, {responseType : 'blob'})

More details : https://angular.io/api/common/http/HttpClient#get

  • Related