el-upload使用formData上传文件

需求背景:点击输入框选择要上传的压缩包文件,算中后输入框显示选择的文件名称

<el-upload
                  ref="uploadFile2"
                  action="string"
                  :limit="1"
                  accept=".zip"
                  :on-change="handleChange"
                  :auto-upload="false"
                  :file-list="fileList"
                  :show-file-list="false"
                >
                  <el-input v-model="ruleForm.agentFile"></el-input>
                </el-upload>

这里绑定on-change方法目的就是拿变量接收前端上传的文件以及要显示的文件名称;

    // 上传的文件发生变化时
    handleChange(file, fileLists) {
      this.ruleForm.agentFile = file.name;
      fileObj = file.raw;
      console.log(file);
      // 这里把数组置空是为了每次只能上传一个文件,以防报错
      this.fileList = [];
    },

 接下来是表单提交

// 表单提交
    submitForm() {
      // 验证表单是否填写完整且正确
      this.$refs["ruleForm"].validate(valid => {
        if (valid) {
          let formData = new FormData();
          // 把新增时后端要求的参数都添加进来
          formData.append("agentName", this.ruleForm.agentName);
          formData.append("agentRole", this.ruleForm.agentRole);
          formData.append("agentType", this.ruleForm.agentType);
          formData.append("description", this.ruleForm.description);
          formData.append("unit", this.ruleForm.unit);
          formData.append("agentFile", fileObj);
          // 这里使用formData类型是因为要传给后端文件
          addAgent(formData).then(data => {
            if (data.code == 200) {
              this.$modal.msgSuccess(data.msg);
              this.dialogVisible = false;
              this.$emit("refreshList");
              // 把表单信息清空,保证下次打开的时候是全新空白的
              this.reset();
              // 把表单校验信息清空
              this.$refs["ruleForm"].clearValidate();
            } else {
              this.$modal.msgError(data.msg);
            }
          });
        }
      });
    }

之前都是上传文件单独要个接口,这样的话新增和上传文件只需要一个接口,又学到了~

你可以使用 `el-upload` 组件来实现文件上传功能。`el-upload` 是一个基于 Element-UI 的组件,可以方便地实现文件上传和文件预览的功能。 首先,确保你已经安装了 Element-UI。然后,在你的项目中引入 `el-upload` 组件,并按照以下步骤配置: 1. 在需要使用上传组件的页面中,添加 `el-upload` 标签。例如: ```html <template> <div> <el-upload class="upload-demo" action="/your-upload-url" :on-success="handleSuccess" :before-upload="beforeUpload" :limit="3" :on-exceed="handleExceed" :auto-upload="false" > <el-button size="small" type="primary">点击上传</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> </div> </template> ``` 2. 在 `el-upload` 的属性中配置上传相关的参数,例如: - `action`:设置上传文件的接口地址。 - `on-success`:设置上传成功后的回调函数。 - `before-upload`:设置上传前的钩子函数,用于对文件进行校验或其他操作。 - `limit`:设置最大允许上传的文件数量。 - `on-exceed`:设置超出限制时的回调函数。 - `auto-upload`:设置是否自动上传文件。 3. 在组件的 `methods` 中定义相关函数,例如: ```javascript methods: { handleSuccess(response, file, fileList) { // 上传成功后的处理逻辑 console.log(response, file, fileList); }, beforeUpload(file) { // 文件上传前的校验逻辑 const isJPG = file.type === 'image/jpeg' || file.type === 'image/png'; const isLt2M = file.size / 1024 / 1024 < 2; if (!isJPG) { this.$message.error('只能上传 JPG/PNG 格式的图片'); } if (!isLt2M) { this.$message.error('上传图片大小不能超过 2MB'); } return isJPG && isLt2M; }, handleExceed(files, fileList) { // 超出文件数量限制时的处理逻辑 this.$message.warning(`当前限制选择 ${this.limit} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${fileList.length + files.length} 个文件`); } } ``` 以上是一个简单的 `el-upload` 组件的配置示例。你可以根据自己的需求进行修改和扩展。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值