返回

揭秘ElementUI中el-form验证el-upload上传文件的秘密

前端

前言

ElementUI是一款非常流行的前端UI框架,它提供了丰富的组件库,帮助开发者快速构建出美观、易用的Web应用程序。在ElementUI中,el-form组件可以用于创建表单,el-upload组件可以用于上传文件。当我们将el-upload组件添加到el-form组件中时,就可以对上传的文件进行验证。

常规验证

ElementUI提供了多种文件验证规则,这些规则可以帮助我们确保上传的文件符合我们的要求。例如,我们可以使用size验证规则来限制上传文件的最大尺寸,可以使用type验证规则来限制上传文件的类型,还可以使用async-validator验证规则来进行自定义验证。

<el-form ref="form" :model="form" label-width="80px">
  <el-form-item label="上传文件" prop="file">
    <el-upload
      :action="uploadUrl"
      :headers="headers"
      :multiple="true"
      :accept="accept"
      :on-success="handleSuccess"
      :on-error="handleError"
      :on-change="handleChange"
      :on-preview="handlePreview"
      :on-remove="handleRemove">
      <el-button size="small" type="primary">点击上传</el-button>
      <div slot="tip" class="el-upload__tip">只能上传jpg/png格式的文件,且不超过500kb</div>
    </el-upload>
  </el-form-item>
</el-form>
export default {
  data() {
    return {
      form: {
        file: ''
      },
      uploadUrl: '',
      headers: {},
      accept: 'image/*',
      fileList: []
    }
  },
  methods: {
    handleSuccess(response, file, fileList) {
      this.$message.success('文件上传成功');
    },
    handleError(err, file, fileList) {
      this.$message.error('文件上传失败');
    },
    handleChange(file, fileList) {
      this.fileList = fileList;
    },
    handlePreview(file) {
      this.$message.info('文件预览');
    },
    handleRemove(file, fileList) {
      this.fileList = fileList;
    }
  }
}

自定义验证

除了常规验证规则之外,ElementUI还允许我们进行自定义验证。我们可以通过async-validator验证规则来实现自定义验证。async-validator是一个第三方库,它提供了丰富的验证规则,可以满足我们各种各样的验证需求。

<el-form ref="form" :model="form" label-width="80px">
  <el-form-item label="上传文件" prop="file">
    <el-upload
      :action="uploadUrl"
      :headers="headers"
      :multiple="true"
      :accept="accept"
      :on-success="handleSuccess"
      :on-error="handleError"
      :on-change="handleChange"
      :on-preview="handlePreview"
      :on-remove="handleRemove">
      <el-button size="small" type="primary">点击上传</el-button>
      <div slot="tip" class="el-upload__tip">只能上传jpg/png格式的文件,且不超过500kb</div>
    </el-upload>
  </el-form-item>
</el-form>
export default {
  data() {
    return {
      form: {
        file: ''
      },
      uploadUrl: '',
      headers: {},
      accept: 'image/*',
      fileList: []
    }
  },
  methods: {
    handleSuccess(response, file, fileList) {
      this.$message.success('文件上传成功');
    },
    handleError(err, file, fileList) {
      this.$message.error('文件上传失败');
    },
    handleChange(file, fileList) {
      this.fileList = fileList;
    },
    handlePreview(file) {
      this.$message.info('文件预览');
    },
    handleRemove(file, fileList) {
      this.fileList = fileList;
    },
    validateFile(file, callback) {
      const isJPGOrPNG = file.type === 'image/jpeg' || file.type === 'image/png';
      const isLt500kb = file.size / 1024 < 500;

      if (!isJPGOrPNG) {
        callback(new Error('只能上传jpg/png格式的文件'));
      } else if (!isLt500kb) {
        callback(new Error('文件不能超过500kb'));
      } else {
        callback();
      }
    }
  }
}

结语

通过本文,我们学习了如何使用ElementUI进行文件上传验证。ElementUI提供了多种文件验证规则,可以满足我们各种各样的验证需求。此外,ElementUI还允许我们进行自定义验证,以满足我们更加复杂的需求。希望本文能帮助您轻松搞定ElementUI中的文件上传验证问题。