gpt4 book ai didi

angular - 使用blob以angular 2下载xlsx文件

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

我想使用 rest api 在 angular 2 上从客户端下载 xlsx 文件。

我从我的 GET 请求中得到一个字节数组作为响应,我将它发送到带有订阅的下载函数:

let options = new RequestOptions({ search: params });
this.http.get(this.restUrl, options)
.subscribe(this.download);

使用 blob 下载函数:

download(res: Response) {
let data = new Blob([res.arrayBuffer()], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;' });
FileSaver.saveAs(data, this.fileName);};

我的问题是我的文件总是损坏。我尝试了很多版本,但没有任何效果。

** 也用这个解决方案尝试过但它不起作用(xlsx 文件仍然损坏)- Angular 2 downloading a file: corrupt result ,不同的是我的数据是数组Buffer而不是string或者json,PDF和xlsx是有区别的。

10 倍!

最佳答案

我遇到了与您相同的问题 - 通过将 responseType: ResponseContentType.Blob 添加到我的 Get 选项来修复它。检查下面的代码:

public getReport(filters: ReportOptions) {
return this.http.get(this.url, {
headers: this.headers,
params: filters,
responseType: ResponseContentType.Blob
})
.toPromise()
.then(response => this.saveAsBlob(response))
.catch(error => this.handleError(error));
}

saveAsBlob() 只是 FileSaver.SaveAs() 的包装器:

private saveAsBlob(data: any) {
const blob = new Blob([data._body],
{ type: 'application/vnd.ms-excel' });
const file = new File([blob], 'report.xlsx',
{ type: 'application/vnd.ms-excel' });

FileSaver.saveAs(file);
}

关于angular - 使用blob以angular 2下载xlsx文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40996962/

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