【问题标题】:How to download a file in angular, which is received as application/octet-stream如何以角度下载文件,该文件作为 application/octet-stream 接收
【发布时间】:2019-10-12 17:18:22
【问题描述】:
我正在创建一个网页,该网页必须下载 csv 格式的文件。
REST API 返回文件。
访问 Api 时出现错误。
我猜这是因为文件正在转换为 JSON。如何从后端获取并处理。
service.ts
return this.http.get(URL);
【问题讨论】:
标签:
angular
angular6
downloadfile
【解决方案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`)
});