前端处理blob数据流

116 阅读1分钟

第一步:

请求头里加两个属性:

export async function XXX(data){
    return request("......"),{
        method:"post",
        data:data
        responseType:"arrayBuffer", // 或者blob
        getReponse:true
    }
}

第二步:

获取文件名

let result = await XXX(params);
let fileName =  result.response?.headers  ?.get(‘content-disposition’)?.split(‘attachment;filename=’)[1] || '导出文件.xlsx';
fileName = decodeURI(fileName)

第三步

创建a连接,并下载文件

const link = document.createElement('a');
link.download = fileName;
link.href = URL.createObjectURL(new Blob([result.data]));
link.setAttribute('target','_blank');
link.click()