如何下载angular6中的xls或xlsx文件(Blob API响应)
我试图下载在API响应中作为blob接收的XLSX文件,但它作为HttpErrorResponse接收 这是由于angular5的angular请求结构发生了变化 我已经尝试了使用HttpErrorResponse对象响应的请求,如下所示:如何下载angular6中的xls或xlsx文件(Blob API响应),angular6,blob,xlsx,Angular6,Blob,Xlsx,我试图下载在API响应中作为blob接收的XLSX文件,但它作为HttpErrorResponse接收 这是由于angular5的angular请求结构发生了变化 我已经尝试了使用HttpErrorResponse对象响应的请求,如下所示: myBlobRequest():Observable<any>{ return this.http.get(url, { responseType: 'blob'}) .map((response: Response) =
myBlobRequest():Observable<any>{
return this.http.get(url, { responseType: 'blob'})
.map((response: Response) => {
return response;
})
.catch((res: Response) => {
// handleError(response)
});
}
myBlobRequest():可观察{
返回此.http.get(url,{responseType:'blob'})
.map((响应:响应)=>{
返回响应;
})
.catch((res:Response)=>{
//handleError(响应)
});
}
以下解决方案对我有效。因为它在HttpErrorResponse中给出了json解析错误
解决方案:
{responseType:'blob'}应替换为{responseType:'blob'作为'json'}
请求:
获取方法:
myBlobRequest():Observable<any>{
return this.http.get(url, { responseType: 'blob' as 'json' })
.map((response: Response) => {
return response;
})
.catch((res: Response) => {
// handleError(response)
});
}
- 没有文件保护程序库:
这毫无意义。将
添加为“json”
只不过是在欺骗编译器将调用哪个重载,而您的映射回调无论如何都是毫无意义的。如果您想在HttpClient中获取响应对象,请参阅。@jonrsharpe,谢谢您的建议。这个解决方案对我有效,因为在我的例子中,收到了HttpErrorResponse对象,并且显示了in error.error>>json解析错误。
this.serviceObj.myBlobRequest.subscribe((blobResponse)=>{
var blob = new Blob([resp], { type: 'application/vnd.openxmlformats-
officedocument.spreadsheetml.sheet;' });
FileSaver.saveAs(blob, "test.xlsx");
});
this.serviceObj.myBlobRequest.subscribe((blobResponse)=>{
var blob = new Blob([resp], { type: 'application/vnd.openxmlformats-
officedocument.spreadsheetml.sheet;' });
// Download File without FileSaver
const downloadUrl = window.URL.createObjectURL(blob);
var link = document.createElement('a');
link.href = downloadUrl;
link.download = "test.xlsx";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
});