后台传来的文件流:
下载并兼容了ie:
export function downloadFile(data, fileName, http, url) {
axios({
method: http,
data: data,
url: '/api' + url,
responseType: "arraybuffer" //注意这个参数必须加,不然会出现下载好的文件打开是乱码情况
//这个参数是为了告诉axios请求,咱们请求的是二进制数据流
}).then(res => {
// 假设 data 是返回来的二进制数据
const data = res.data;
let blob = new Blob([data], { type: res.headers["content-type"] });
const url = window.URL.createObjectURL(blob);
if (window.navigator.msSaveOrOpenBlob) { //兼容ie的下载
try {
window.navigator.msSaveBlob(blob, fileName);
} catch (e) {
console.log(e);
}
} else {
const link = document.createElement("a");
link.style.display = "none";
link.href = url;
link.setAttribute("download", fileName);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
});
}
可以看到已成功下载:
注意:如果要下载的是压缩包,那么需要设置responseType,改为blob类型:
responseType: “blob”
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/149772.html