前端导出Excel文件,服务端返回二进制流的处理方式
在导出Excel文件时,之前的处理是后端将Excel文件上传至文件服务器,返回给前端文件路径,前端下载文件。
后因技术调整,后台返回二进制流。我请求后发现返回了一堆乱码,如下图
解决办法,在请求时,加入responseType:‘blob’,可以返回Blob类型的数据。
前端下载blob类型的文件方法:
const blob = new Blob([data], { type: "application/vnd.ms-excel" });
var link = document.createElement("a");
if("download" in link) {
var body = document.querySelector("body");
link.href = window.URL.createObjectURL(blob);
link.download = "导出名字";
link.style.display = "none";
body.appendChild(link);
link.click();
body.removeChild(link);
window.URL.revokeObjectURL(link.href);
} else {
window.navigator.msSaveBlob(blob,'xxx.xlsx'); // 兼容IE
}