【区分vue2和vue3下的element UI ¶Upload 上传组件,分别详细介绍属性,事件,方法如何使用,并举例】

在 Vue 2 中,我们通常使用 Element UI 的 el-upload 组件来实现文件上传功能。然而,在 Vue 3 中,由于 Element UI 没有官方支持 Vue 3 的版本,我们通常会使用 Element Plus(Element UI 的 Vue 3 版本)的 el-upload 组件,尽管两者的使用方式大致相同,但也有一些差异。

Vue 2 + Element UI

el-upload 组件

属性 (Attributes):

  • action: 必需的 URL,上传的地址
  • headers: 设置上传的请求头部
  • on-success: 文件上传成功时的钩子
  • on-error: 文件上传失败时的钩子
  • before-upload: 上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传
  • auto-upload: 是否在选取文件后立即进行上传
  • multiple: 是否支持多文件上传
  • limit: 允许上传文件的个数限制
  • on-exceed: 文件超出个数限制时的钩子
  • file-list: 已经上传的文件列表,默认根据 v-model 生成
  • drag: 是否启用拖拽上传
  • ...: 其他通用属性

事件 (Events):

  • change: 文件状态改变时的钩子,更新文件列表
  • success: 文件上传成功时的回调
  • error: 文件上传失败时的回调
  • progress: 文件上传时的进度事件
  • remove: 文件列表移除文件时的回调
  • ...: 其他通用事件

方法 (Methods):

  • Element UI 的 el-upload 组件通常不提供直接调用的方法,而是通过属性和事件来控制其行为。

示例:

vue 复制代码
<template>
  <el-upload
    class="upload-demo"
    action="https://example.com/upload"
    :on-success="handleSuccess"
    :before-upload="beforeUpload"
    :auto-upload="false"
    :multiple="true"
    :limit="3"
    :on-exceed="handleExceed"
    :file-list="fileList"
    :drag="true">
    <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
    <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
    <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
  </el-upload>
</template>

<script>
export default {
  data() {
    return {
      fileList: [],
    };
  },
  methods: {
    handleSuccess(response, file, fileList) {
      this.fileList = fileList;
      // 处理上传成功的逻辑
    },
    beforeUpload(file) {
      const isJPG = file.type === 'image/jpeg' || file.type === 'image/png';
      const isLt2M = file.size / 1024 / 1024 < 0.5;
      if (!isJPG) {
        this.$message.error('上传头像图片只能是 JPG/PNG 格式!');
        return false;
      }
      if (!isLt2M) {
        this.$message.error('上传头像图片大小不能超过 0.5MB!');
        return false;
      }
      return true;
    },
    handleExceed(files, fileList) {
      this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
    },
    submitUpload() {
      this.$refs.upload.submit(); // 使用 $refs 调用组件的 submit 方法
    },
  },
};
</script>

Vue 3 + Element Plus

在 Vue 3 中使用 Element Plus 的 el-upload 组件与 Vue 2 + Element UI 非常相似,但请注意 API 可能会有一些变化或新增功能。你应该查阅 Element Plus 的官方文档以获取最新的信息。

示例:

在 Vue 3 中使用 Element Plus 的 el-upload 组件的示例代码与 Vue 2 类似,但你需要使用 Composition API 来定义响应式的数据和方法。

vue 复制代码
<template>
  <!-- 模板部分与 Vue 2 示例类似 -->
</template>

<
相关推荐
我是Superman丶20 小时前
【前端UI框架】VUE ElementUI 离线文档 可不联网打开
前端·vue.js·elementui
乐~~~1 天前
el-tabs 自适应高度
elementui·scss
J总裁的小芒果2 天前
vue3-print打印eletable某一行的数据
javascript·vue.js·elementui
机器人迈克猫2 天前
Django_Vue3_ElementUI_Release_004_使用nginx部署
nginx·elementui·django
代码搬运媛3 天前
el-table 如何实现行列转置?
javascript·vue.js·elementui
繁依Fanyi3 天前
使用 Spring Boot + Vue + ElementUI 构建简易评分系统
java·开发语言·vue.js·人工智能·spring boot·算法·elementui
尸僵打怪兽3 天前
后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0917)
开发语言·javascript·vue.js·elementui
快乐小土豆~~4 天前
el-input设置后缀显示单位并阻止滚轮微调
前端·vue.js·elementui
加勒比海涛4 天前
ElementUI 快速入门:使用 Vue 脚手架搭建项目
前端·vue.js·elementui