使用 javascript 打开下载的 zip 文件时出现问题

问题描述 投票:0回答:1

我正在尝试打开根据

GET
请求发送给我的下载的 zip 文件。我正在使用
axios
来处理我的 api 请求。

问题

文件已下载。但我无法提取或打开它。空存档问题。

我用的是什么?

这是我的响应处理程序:

const data = response.data
const url = window.URL.createObjectURL(new Blob([data]));

const link = document.createElement("a");
link.href = url;
link.setAttribute("download", `report.zip`);

document.body.appendChild(link);
link.click();
link.parentNode.removeChild(link);
  1. API 运行良好。使用
    Postman
    进行测试。能够下载并使用该 zip 中的文件。
  2. 上面的代码适用于
    csv
    文件类型。

我怀疑那件事。请分享可能是什么问题。

    

javascript reactjs rest axios blob
1个回答
0
投票
Blob

。这是我用来通过 Ajax 下载文件的函数。还有一个针对 Internet Explorer/Edge 的特殊路径,因为它会阻止合成链接点击。

type

因此您可以在代码中使用它,如下所示:

const downloadFile = (data, filename, type = "application/zip") => { const blob = new Blob([data], { type }) if(navigator.msSaveBlob) { window.navigator.msSaveBlob(blob,filename) } else { const url = window.URL.createObjectURL(blob) const link = document.createElement('a') link.href = url link.setAttribute('download', filename) document.body.appendChild(link) link.click() document.body.removeChild(link) } }

© www.soinside.com 2019 - 2024. All rights reserved.