1、适用场景为导出文件流时;后台错误信息返回
此为前端处理流的方法,单独定义.js文件;如果需要请引用
export function exportWordData(res){
const link = document.createElement("a");
let blob = new Blob([res.data], { type: "application/vnd.ms-word" });
link.style.display = "none";
link.href = URL.createObjectURL(blob);
link.setAttribute("download", decodeURI(res.headers['filename']));
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
示列
axios({
method: "post",
url: 后台接口api,
data:参数,
responseType: "blob",
headers: {
Authorization: getToken(),
},
})
.then((res) => {
console.log(res);
exportWordData(res);//exportWordData前端处理流的方法(需要自己去定义可以网上搜搜这里是导出word)
this.$store.commit("TOGGLE_PAGELOADING", false);
})
.catch((error) => {
this.$store.commit("TOGGLE_PAGELOADING", false);
//这为主要处理代码
if (error.response) {
const { status, data } = error.response;
// 将Blob转换为文本
const reader = new FileReader();
reader.onload = function(e) {
try {
const errorJson = JSON.parse(e.target.result);
const errorMessage = errorJson.message || 'An unknown error occurred';
this.$message.warning(errorMessage);
console.log(`Error message: ${errorMessage}`);
} catch (parseError) {
// 如果JSON解析失败,直接使用原始文本作为错误信息
this.$message.warning(e.target.result);
console.log(`Error message: ${e.target.result}`);
}
}.bind(this);
reader.readAsText(data);
} else {
// 服务器没有响应或请求未发出
this.$message.warning("Network error or request did not leave the browser.");
}
});