先通过,Fromdata上传文件,当有错误时,后端返回错误文件,当错误文件是正常的,则直接创建A标签,然后主动触发下载,当返回的错误文件不正常时,则返回对于的错误消息,不说了,直接上干货
//上传方法
uploadFile(){
let form = new FormData()
let that =this
form.append('uploadFile', this.fileList[0]);//有多少条数据appeng的多少次
this.$axios.post(that.axiosUrl, form, {headers: {'Content-type': 'multipart/form-data'},responseType:'blob'}).then(res => {//值的说的是,响应类型一定要设置,坑了我许久
let reader = new FileReader()
reader.readAsText(new Blob([res]), 'utf-8')
reader.onload = () => {
var obj = reader.result
if(obj.indexOf('result')>-1){
let ret = JSON.parse(obj)
if(ret.result == 200){
this.$emit("query");
// this.$refs.ListTable.loadData();
return this.$message.success('导入成功!')
}else if(ret.result != 200){
return this.$message.error('导入失败!')
}
}
// this.$message.error('导入失败');
const blob = new Blob([res], {type: 'application/vnd.ms-excel'})
const fileName = '有问题数据表.xls'
if ('download' in document.createElement('a')) { // 非IE下载
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
} else { // IE10+下载
navigator.msSaveBlob(blob,fileName)
}
this.$message({
type: "error",
message: "导入失败,请查看表格"
});
// console.log(res)
}
}).catch(err => {
console.log(err)
})
},
注意,这里面有很多细节,需要大家去注意,好记性不如烂笔头,