后台返回二进制文件,前端点击下载

后台数据以二进制字符串返回
调接口获取二进制字符串

axios.get("/downLoad",{
  headers:{
    responseType: 'blob'
  }
}).then(res=> {
  downLoad(res.data, `文件名`)
})

downLoad(data,fileName) {
    if (!data) {
        return;
    }
    // 创建一个Blod对象 并且用url指向它
    let url = window.URL.createObjectURL(new Blob([data]));
    // 创建a标签
    let link = document.createElement("a");
    // 不让a标签显示
    link.style.display = "none";
    // a 标签的href 指向之前的url地址
    link.href = url;
    // 设置下载属性和文件名
    link.setAttribute("download", `${fileName}.xlsx`);
    // 将a标签插入到页面
    document.body.appendChild(link);
    // 点击a标签
    link.click();
    // 下载成功后,移除a标签和url对象
    document.body.removeChild(link)
    window.URL.revokeObjectURL(url)
}
posted @ 2022-03-21 14:36  coderlq  阅读(206)  评论(0)    收藏  举报