vue 后端返回 二进制 文件前端 转化处理
① 请求前改变请求体为 formData
mxion() {
let newData = new FormData();
newData.append("file", this.file.raw);
// newData.append("failLines", JSON.stringify(this.newfailLines));
下方是数组转化 二进制文件 进行传值
const blob = new Blob([JSON.stringify(this.newfailLines)], {
type: "application/json"
});
newData.append("failLines", blob);
this.ObAPI.newExportFailLines(newData).then(res => {
if (!res) return;
//fileName:下载的文件名
var fileName = decodeURIComponent(
res.headers["content-disposition"].split("=")[1]
);
let blob = new Blob([res.data], {
type: "application/vnd.ms-excel;charset=utf-8"
});
// 针对ie浏览器
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, fileName);
} else {
//非ie浏览器
var downloadElement = document.createElement("a");
var href = window.URL.createObjectURL(blob); //常见下载的链接
downloadElement.href = href;
downloadElement.download = fileName; //下载后文件名
// downloadElement.download = fileName.substring(5) + "<br>"; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放blob对象
}
}); //全局挂载调用
},