美文网首页
elementUI实现自定义上传文件并携带参数

elementUI实现自定义上传文件并携带参数

作者: 明月几何8 | 来源:发表于2020-11-19 09:25 被阅读0次

    vue代码

    <el-upload
        ref="upload"
        action="/api/iot/deviceInfo/uploadFiles"
        :before-upload="beforeUploadHandle"
        :on-success="handleSuccess"
        :auto-upload="false"
        multiple
        :limit="2"
        :on-exceed="handleExceed"
        :file-list="fileList">
         <el-link :disabled="disabled" icon="el-icon-paperclip" type="primary">添加文档或视频</el-link>
     </el-upload>
    

    js代码

     // 上传之前
        beforeUploadHandle(file) {
          // 校验格式
          if (
            file.type !== "video/mp4" &&
            file.type !== "application/msword" &&
            file.type !==
              "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
          ) {
            this.$message.error("只支持.mp4、.doc、.docx文件!");
            return false;
          }
        },
        // 超出上传数量的时候调用
        handleExceed(files, fileList) {
          this.$message.warning(
            `当前限制选择 2 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
              files.length + fileList.length
            } 个文件`
          );
        },
        // 手动上传
        submitUpload() {
          this.$refs.ruleForm.validate((valid) => {
            if (valid) {
              if (this.$refs.upload.uploadFiles.length <= 0) {
                this.$message.warning("请选择上传的文档或视频");
                return;
              }
              this.saveLoading = true;
              // 新建formData对象
              let formData = new FormData();
              // 将上传的文件放进formData对象
              this.$refs.upload.uploadFiles.forEach((file) => {
                formData.append("file", file.raw);
              });
              // 携带其他参数
              formData.append("articleTitle", this.form.articleTitle);
              formData.append("category", this.form.category);
              formData.append("author", this.form.author);
              formData.append("keyword", this.form.keyword);
              formData.append("unit", this.form.unit);
              // 调用上传接口
              uploadFile(formData)
                .then((res) => {
                  if (res && res.code === 200) {
                    this.$message.success("保存成功");
                  } else {
                    this.$message.error(res.msg);
                  }
                  this.saveLoading = false;
                  this.queryRule();
                })
                .catch((err) => {
                  console.log(err);
                });
              this.dialogFormVisible = false;
              this.isAdd = false;
            }
          });
        },
    

    使用this.$refs.upload.uploadFiles获取文件列表是因为通过绑定file-list经常获取不到对象列表,具体原因还不清楚

    相关文章

      网友评论

          本文标题:elementUI实现自定义上传文件并携带参数

          本文链接:https://www.haomeiwen.com/subject/tppbrktx.html