gpt4 book ai didi

excel - 如何使用 Angular2 正确下载 excel 文件

转载 作者:太空狗 更新时间:2023-10-29 17:29:43 26 4
gpt4 key购买 nike

这是我的服务代码,它发出带有响应的 xls 文件的 post 请求:

exportInternalOrder(body) {
let user_token: string = this.sessionService.getToken();
let headers = new Headers();
headers.append('responseType', 'arraybuffer');
headers.append('Authorization', 'Bearer ' + user_token);
return this.http.post(this.config.exportInternalOrder, body,{
headers: headers
}).map(res => new Blob([res._body],{ type: 'application/vnd.ms-excel' }));
}

应该处理 excel 文件的响应。这是调用它的代码:

let objToSend = this.makeObjToSend(false);
this.reportingService.exportExcel(objToSend)
.subscribe(
data => {
this.exportData(data);
},
error => {
this.errorFilterMsg.push({ severity: 'error', detail: 'Report exporting has failed!' });
}
);

这是文件的保存(出于某种原因 window.open 什么都不做):

exportData(data){       
let blob = data;
let a = document.createElement("a");
a.href = URL.createObjectURL(blob);
a.download = 'fileName.xls';
document.body.appendChild(a);
a.click();
}

但文件仍然保存为损坏的文件。使用 postman 和 curl 时一切正常。任何帮助将不胜感激。

最佳答案

responseType 不应在 headers 中设置,它是 RequestOptionsArgs 对象的一部分,该对象作为 post< 中的第二个参数传递 函数和 RequestOptionsArgs 包含 headersresponseType 等,您可以阅读更多相关信息 here .因此,您的代码应如下所示:

import { ResponseContentType } from '@angular/http';

exportInternalOrder(body) {
let user_token: string = this.sessionService.getToken();
let headers = new Headers();
headers.append('Authorization', 'Bearer ' + user_token);
return this.http.post(this.config.exportInternalOrder, body,{
headers: headers,
responseType: ResponseContentType.Blob
}).map(res => new Blob([res._body],{ type: 'application/vnd.ms-excel' }));
}

关于excel - 如何使用 Angular2 正确下载 excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43276726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com