Element 组件 el-upload 获取上传失败时的返回信息

5,374 阅读1分钟

在处理 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 发现返回的格式不是能简单获取的。我在网上搜索到两种大神的解决方案,在此记录下,以便以后遇到~

image.png

方案一

直接通过 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)
}