试图直接从api的响应中下载文件



我有一个api响应,返回一个xlsx文件作为响应。

api是触发按钮点击,我需要下载它作为响应。

每个API调用都经过一个服务,该服务处理附加令牌到url以进行身份验证。也就是说我不能使用这里提到的方法。我得到的响应是这样的(调试后的响应)。我试过了

a.href = window.URL.createObjectURL(response)

a.href = window.URL.createObjectURL(new blob([response]))

并尝试下载,但电子表格已损坏(我知道文件是好的,因为swagger返回文件正确)。

我如何得到这个文件,在swagger像这样,以便我可以下载在a.click()

这是我的API从。net

提前谢谢你。

您可以尝试使用FileSaver.js库下载该文件。
下面是示例代码:

import FileSaver from 'file-saver';
// Call your API to get the response
axios.get('/PrintWorkSheet', { responseType: 'arraybuffer' }).then((response) => 
{
//Create a Blob object from the response data
const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
// Use FileSaver.js to save the Blob as a file
FileSaver.saveAs(blob, 'WorkSheet.xlsx');
})
.catch((error) => {
console.log(error);
});

问题出在axios实例上。

我已经在请求头中添加了响应类型,问题解决了。

responseType: "blob",

这是根本原因。之后,我能够下载文件,并在评论中由'Klian'提供了对我的问题的回应。

相关内容

  • 没有找到相关文章

最新更新