Element 组件 el-upload 获取上传失败时的返回信息
在处理 el-upload 上传组件在上传失败时可以使用 on-error钩子函数来显示后端返回的错误信息
//html 区域 <el-upload class="upload-demo" ref="upload" :headers="headers" :action="excelUploadApi" :on-change="handleChange" :on-error="handleError" :show-file-list="false"> <el-button slot="trigger" class="filter-item" type="warning" size="small" icon="el-icon-upload"> 导入按钮 </el-button> </el-upload> //利用 :on-error="handleError" 钩子函数 复制代码
但在打印出返回的err 发现返回的格式不是能简单获取的。我在网上搜索到两种大神的解决方案,在此记录下,以便以后遇到~
方案一
直接通过 JSON.parse() 去转换 err.message 而不是转换 err
handleError(err, file, fileList) { //上传失败钩子函数 console.log('err', err) console.log('err', JSON.parse(err.message)) if (file.status == 'fail') { this.$message.error(JSON.parse(err.message).message) } } 复制代码
方案二
把错误信息转成字符串,然后去掉" Error: " ,剩下的内容就是个json,然后再转成对象
handleError(err, file, fileList) { //上传失败钩子函数 console.log('err', err) let myError=err.toString();//转字符串 myError=myError.replace("Error: ","") // 去掉前面的" Error: " myError=JSON.parse(myError);//转对象 console.log(myError); } 复制代码
在我的项目中使用的部分,手动上传的过程上传成功后显示成功信息
注意在这个地方on-success部分只写方法名即可,不用携带参数 <el-form-item label="file" :label-width="formLabelWidth"> <el-upload class="upload-demo" drag ref="upload" action="http://127.0.0.1:5000/upload_user_dict_excel" :auto-upload="false" :on-success="success" :data="{'language':form.language,'type':form.type}"> <i class="el-icon-upload"></i> <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> </el-upload> </el-form-item> <el-button type="primary" @click="submitDilog('form')">确 定</el-button> 复制代码
methods
submitDilog(formName){ if(this.add_type){ let data=new FormData() data.append("language",this.form.language) data.append("type",this.form.type) data.append("error",this.form.error) data.append("suggestions",this.form.suggestions) data.append("info",this.form.info) axios.post("http://127.0.0.1:5000/upload_user_dict",data).then(res=>{ alert(res.data.message) }) this.dialogFormVisible = false this.form.error="", this.form.suggestions='', this.form.info= '', this.form.type='拼写自定义', this.form.language='英文' }else{ //手动提交 this.$refs.upload.submit() this.dialogFormVisible = false } } success(response,file,fileList){ alert(response.message) }
作者:waws520
链接:https://juejin.cn/post/7019121700537106445