如何以角度下载文件,该文件作为 application/octet-stream 接收
Posted
技术标签:
【中文标题】如何以角度下载文件,该文件作为 application/octet-stream 接收【英文标题】:How to download a file in angular, which is received as application/octet-stream 【发布时间】:2019-10-12 17:18:22 【问题描述】:我正在创建一个网页,该网页必须下载 csv 格式的文件。 REST API 返回文件。
访问 Api 时出现错误。 我猜这是因为文件正在转换为 JSON。如何从后端获取并处理。
service.ts
return this.http.get(URL);
【问题讨论】:
到目前为止你做了什么? Angular 6 CSV download的可能重复 【参考方案1】:将八位字节流转换为任何所需的数据类型。 我有类似的情况,我将 OCTET-STREAM 转换为 pdf。
略有不同,可能对其他人有帮助,我收到了 json 响应,而 octet-stream Array 是该 json 响应中的一个字段。
在这种情况下,将 .pdf 替换为 .csv
octet_array 是八位字节值的数组。
let arr = new Uint8Array(octet_array);
let downloadLink = document.createElement('a');
let b = new Blob([arr], type: 'application/octet-stream' )
downloadLink.href = window.URL.createObjectURL(b);
downloadLink.setAttribute('download', "prescription.pdf");
document.body.appendChild(downloadLink);
downloadLink.click();
downloadLink.parentNode.removeChild(downloadLink);
【讨论】:
【参考方案2】:您可以使用file-saver
import * as FileSaver from 'file-saver';
this.http.post(url, resource, responseType: 'blob' )
.subscribe((resp: any) =>
FileSaver.saveAs(resp, `filename.csv`)
);
【讨论】:
如何从响应头中获取文件名?以上是关于如何以角度下载文件,该文件作为 application/octet-stream 接收的主要内容,如果未能解决你的问题,请参考以下文章