element 中上传文件和表单提交公用一个接口

本文介绍了如何在ElementUI的Upload组件中,同时上传文件并提交表单数据。通过设置`auto-upload`为`false`实现手动上传,使用`fileList`获取文件数据,然后将文件内容添加到FormData对象中进行POST请求。
摘要由CSDN通过智能技术生成

在项目中需要使用文件上传,和表单内容同时提交的情况

1.使用element中Upload 上传组件,除了上传文件还需要同时提交其他数据,可以进行手动上传
但是upload组件中上传的地址action必选参数,不能删除,此时将action="#"即可。
:auto-upload="false"即设置为手动上传

  <el-form-item label="文件上传:" prop="uploadFile">
        <el-upload
          class="upload-demo"
          action="#"
          :on-preview="handlePreview"
          :on-remove="handleRemove"
          :before-remove="beforeRemove"
          :on-change="uploadChange"
          multiple
          :limit="1"
          :on-exceed="handleExceed"
          :file-list="fileList"
          :auto-upload="false"
        >
          <el-button size="small" type="primary">点击上传</el-button>
          &nbsp;<span slot="tip" class="el-upload__tip">
            只能上传1个文件
          </span>
        </el-upload>
      </el-form-item>

2.手动上传时候,文件取值为filelist列表中每一项的raw,用formdata上传文件,file:(binary)

 uploadChange(file, fileList) {
      this.form.file = fileList[0].raw;
    }

3.表单提交

    onSubmit(formName) {
      let formData = new FormData();
      formData.append("file", this.form.file);
      formData.append("username", this.form.username);
      formData.append("appid", this.form.appid);
      formData.append("appName", this.form.appName);
      formData.append("groupId", this.form.groupId);
      formData.append("uploadPipe", this.form.uploadPipe);
      formData.append("fileUrl", this.form.fileUrl);
      formData.append("groupName", this.form.groupName);
      let config = {
        headers: {
          "Content-Type": "multipart/form-data"
        }
      };
      this.$refs[formName].validate(valid => {
        if (valid) {
          this.$axios
            .post(this.$apiUrl.fileUpload, formData, config)
            .then(res => {
              if (res.status == "200") {
                this.$message({
                  message: "提交成功",
                  type: "success"
                });
                this.$router.push("/");
              }
            });
        } else {
          return false;
        }
      });
    },



作者:前端林木木
链接:https://www.jianshu.com/p/5025c48ba2f4
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值