element上传组件同步上传excel文件(同时上传数据与文件)

<el-upload
            ref="upload"
            action="123"
            accept=".xls, .xlxs,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
            
            :auto-upload="false"
            :on-change="imgPreview"
            :on-success="fileSuess"
            :file-list="fileList"
            :limit="1"
          >
          <!-- :on-remove="handleRemove" -->
            <el-button size="small" type="primary" icon="el-icon-plus" style="background-color: white;border: 1px solid #DCDFE6;color: #606266;border-radius: 4px;">点击上传</el-button>
            <div slot="tip" class="el-upload__tip">只能上传xls/xlxs文件</div>
          </el-upload>
          

使用el-upload中的:auto-upload="false"阻止自动上传
使用el-upload中的on-change事件控制是否上传的是excel文件并且判断特殊字符(实际开发中可以不用判断文件名中存在特殊字符,因为后端使用阿里云附件服务器文件名有特殊字符不能上传)
URL.createObjectURL是el-upload中提供的方法生成一个bolb文件路径,
this.flieUrl 用于在页面显示选中的图片

imgPreview(file, fileList) {
      let fileName = file.name;
      let regex = /(.xls|.xlsx)$/;
      if (regex.test(fileName.toLowerCase())) {
        // 判断特殊字符
        if(fileName.lastIndexOf('+') == -1){
          this.flieUrl = URL.createObjectURL(file.raw);
          // this.ImpEmployee.silder_image = file.url;
          // console,log(this.file)
        }else{
          this.$message.error("文件名存在特殊字符,请修改文件名");
          this.fileList = [];
        }
        
      } else {
        this.$message.error("请选择Excel文件");
      }
      //console.log('图片上传事件')
      this.ImpEmployee.silderFile = file.raw;
      console.log(this.flieUrl)
      console.log(this.fileList)
    },
SubmitImpEmployee(){
      this.isdisabled = true;
      this.$refs.ImpEmployee.validate(valid => {
        if (valid) {
          if(this.ImpEmployee.silderFile != undefined && this.ImpEmployee.silderFile != ""){
             const formData = new FormData()
            formData.append('file',this.ImpEmployee.silderFile)
            formData.append('areaId',this.ImpEmployee.areaId)
            ImportExcel(formData)
              .then(response => {
                this.isdisabled = false
                if(response.data.type =='success'){
                  this.dialogImpEmployee = false
                    this.getList()
                    this.$confirm('已经批量导入成功,点击确定查看导入结果', '成功', {
                        confirmButtonText: '查看',
                        cancelButtonText: '取消',
                        type: 'success'
                    }).then(() => {
                        this.$router.push({ path: '/employee/ImpEmployeDetail', query: { id: response.data.id }})
                    })
                }  
              })
              .catch(err => {
                
              });
          }else{
            this.isdisabled = false;
            this.$message({
                    type:'warning',
                    message:"请选择需要导入的文件!"
            })
            return;
          }
        } else {
          this.isdisabled = false;
          console.log("error submit!!");
          return;
        }
      });
    },

使用表单提交时如果必须上传文件时,再对获取的文件做判断,然后使用FormData对象向后台传递数据

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值