如何在Angular中下载一个以application/octet-stream形式接收的文件

3
我正在创建一个网页,需要下载CSV格式的文件,REST API将返回该文件。访问API时出现错误,我猜测是因为文件被转换为JSON了。如何从后端获取并处理它?service.ts
return this.http.get(URL);             

1
你目前做了什么? - Yash Rami
1
可能是 Angular 6 CSV 下载 的重复问题。 - Daniel
2个回答

8
您可以使用file-saverimport * as FileSaver from 'file-saver';
this.http.post(url, resource, { responseType: 'blob' })
 .subscribe((resp: any) => {
    FileSaver.saveAs(resp, `filename.csv`)
 });

如何从响应头中获取文件名? - Sunil Garg

0

将八位字节流转换为任何所需的数据类型。
我曾遇到过类似的情况,将八位字节流转换为pdf格式。

稍有不同,也许对其他人有帮助,我收到的是json响应,其中octet-stream数组是该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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接