Angular 4.3: Getting an arraybuffer with new HttpClient

前端 未结 2 1948
挽巷
挽巷 2020-12-30 11:22

I would like to change to the new HttpClient. Until now I handle file downloads the following:

getXlsx (): Observable {
    return this.http.get(\         


        
2条回答
  •  情话喂你
    2020-12-30 12:07

    So Martin has solved my issue:

    getXlsx (): Observable {
        return this.http.get('api/xlsx', {
          responseType: 'blob' // <-- changed to blob
        })
        .map(res => downloadFile(res, 'application/xlsx', 'export.xlsx'))
        .catch(err => handleError(err));
      }
    
    export function downloadFile(blob: any, type: string, filename: string): string {
      const url = window.URL.createObjectURL(blob); // <-- work with blob directly
    
      // create hidden dom element (so it works in all browsers)
      const a = document.createElement('a');
      a.setAttribute('style', 'display:none;');
      document.body.appendChild(a);
    
      // create file, attach to hidden element and open hidden element
      a.href = url;
      a.download = filename;
      a.click();
      return url;
    }
    

提交回复
热议问题