问题背景:
最近在使用easyExcel进行模板填充并导出excel时,发现导出的文件出错了,但是错误信息没有在导出之前提示在界面,而是在文件里:
所以我想让错误信息在导出之前提示出来,并且不再导出这种失败的文件。
解决方法:
由于我前端使用的是downFile方法发送请求,返回值类型是blob,所以我要对返回的blob对象进行分析处理:
/**
* 下载文件 用于excel导出
* @param url
* @param parameter
* @returns {*}
*/
export function downFile(url,parameter, method='get'){
if(method=='get'){
return axios({
url: url,
params: parameter,
method: method ,
responseType: 'blob'
})
}else{
return axios({
url: url,
method: method,
data: parameter,
responseType: 'blob'
})
}
当我们导出的文件正常时,返回的blob对象的type是'application/vnd.ms-excel',当导出的文件出错时,blob对象的type是'application/json',所以根据这个区别我们就能在导出文件之前知道文件是不是出错了
当我们判断data.type为'application/json',文件出错,使用FileReader()读取文件内容,使用this.$message.error()提示报错信息,然后return结束这个方法,就可以不执行后面文件的导出了