el-upload两种不同的上传方式实现分析

 更新时间:2026年06月26日 08:40:38   作者:西瓜有点饿  
el-upload提供了诸多处理,为我们日常开发提供了便利性,同时也存在着一些边界没有处理,这篇文章主要介绍了el-upload两种不同的上传方式实现的相关资料,需要的朋友可以参考下

第一种:选择文件 → 确认上传,两个步骤分离

<el-upload ref="uploadRef" :disabled="loading"
    :auto-upload="false"
    :on-change="handleFileChange"
    :file-list="fileList">

    <template #trigger>
        <el-button type="primary">选取文件</el-button>
    </template>

    <template #tip>
        <div class="text-xs text-red mt-2">文件格式为xls,xlsx文件,单次最多上传1000条</div>
    </template>
            
    <el-button :loading="loading" type="primary" @click="onUpload">确 定</el-button>
</el-upload>

const handleFileChange = (file: any, files: any[]) => {
    // 校验文件格式
    const ext = file.name.split('.').pop()?.toLowerCase()
    if (!['xls', 'xlsx'].includes(ext)) {
        message.error('请上传 xls/xlsx 格式的文件')
        // 移除不合法的文件
        uploadRef.value?.clearFiles()
        fileList.value = []
        return
    }
    // 合法文件,更新列表
    fileList.value = [file]
}

const onUpload = async () => {
    // 检查是否有文件
    if (fileList.value.length === 0) {
        message.warning('请先选择文件')
        return
    }

    try {
        loading.value = true
        const params = new FormData()
        params.append('file', fileList.value[0].raw)
        const res = await UploadAPPListConfig(params)        
        // 上传成功
        if(res.code === 0 && res.data) {
            message.success(res.data)
            dialogVisible.value = false
            emit('success')
        }
    } finally {
        loading.value = false
    }
}

核心配置:

  • auto-upload="false":手动控制上传

  • :on-change="handleFileChange":文件选择时触发

  • :file-list="fileList":绑定文件列表

  • 独立的触发按钮和上传按钮分离

第二种:选择后自动触发上传

<el-upload 
    :auto-upload="true"
    :show-file-list="false" 
    :disabled="updLoading"
    :before-upload="onBeforeUpload" 
    :http-request="onUpload" >
    <el-button type="primary" :loading="updLoading">选取文件</el-button>
</el-upload>

const onBeforeUpload = (file) => {
    // Excel 判断(推荐用扩展名)
    const ext = file.name.split('.').pop()?.toLowerCase()
    if (!['xls', 'xlsx'].includes(ext)) {
        message.error('请上传 xls/xlsx 格式的文件')
        return false
    }
    return true //允许上传
}

const onUpload = async (updFile) => {
    try {
        updLoading.value = true
        const file = updFile.file
        const params = new FormData()
        params.append('file', file)
        const res = await UploadTeleExcel(params)
        message.success('上传成功')
        // 全部成功才能上传
        formData.value.successPhones = res.data.failPhones.length === 0 && res.data.successPhones.length > 0 ? res.data.successPhones: []
    } finally {
        updLoading.value = false
    }
}

核心配置:

  • show-file-list="false":不显示文件列表

  • :before-upload="onBeforeUpload":上传前钩子

  • :http-request="onUpload":自定义上传请求

  • 按钮即触发器,选择后自动触发上传

对比总结

维度第一种第二种
上传流程两步式(选择→确认)一步式(选择即上传)
文件列表显示并管理不显示
文件状态可缓存、可重置即用即传,无状态
用户控制用户主动触发上传系统自动触发
错误处理可重新选择文件需要重新选择
复杂度较高较低
适用场景表单提交、批量导入快速上传、单附件

到此这篇关于el-upload两种不同的上传方式实现分析的文章就介绍到这了,更多相关el-upload两种上传方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Document.Cookie

    详解Document.Cookie

    这篇文章主要介绍了详解Document.Cookie的相关资料,需要的朋友可以参考下
    2015-12-12
  • js实现拖拽效果

    js实现拖拽效果

    本文主要是为了让大家更好的理解js的面向对象,通过实现拖拽效果向大家展示js面向对象,非常不错,这里推荐给大家。
    2015-02-02
  • JavaScript实现拖拽和缩放效果

    JavaScript实现拖拽和缩放效果

    这篇文章主要为大家详细介绍了JavaScript实现拖拽和缩放效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • 利用JS如何获取form表单数据

    利用JS如何获取form表单数据

    这篇文章主要给大家介绍了关于利用JS如何获取form表单数据的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用JS具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • js实现手机拍照上传功能

    js实现手机拍照上传功能

    这篇文章主要为大家详细介绍了js实现手机拍照上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • javascript使用正则表达式检测IP地址

    javascript使用正则表达式检测IP地址

    这篇文章主要介绍了javascript使用正则表达式检测IP地址的方法,需要的朋友可以参考下
    2014-12-12
  • js data日期初始化的5种方法

    js data日期初始化的5种方法

    本文为大家介绍下js data日期初始化的常用5种方法,感兴趣的朋友可以参考下
    2013-12-12
  • JavaScript中浏览器多标签页通信的8种方案盘点

    JavaScript中浏览器多标签页通信的8种方案盘点

    这篇文章主要为大家详细介绍了JavaScript中浏览器多个标签页通信的8种方案与实战场景深度对比,文中的示例代码简洁易懂,有需要的可以参考下
    2025-03-03
  • JavaScript this绑定规则具体实例(告别踩坑指南!)

    JavaScript this绑定规则具体实例(告别踩坑指南!)

    在JavaScript中this关键字是一个非常重要的概念,它用于在运行时确定某个函数调用的上下文,这篇文章主要介绍了JavaScript this绑定规则的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-03-03
  • JavaScript脚本性能的优化方法

    JavaScript脚本性能的优化方法

    JavaScript是一种解释型语言,所以能无法达到和C/Java之类的水平,限制了它能在客户端所做的事情,为了能改进他的性能,我想基于我以前给JavaScript做过的很多测试来谈谈自己的经验,希望能帮助大家改进自己的JavaScript脚本性能。
    2007-02-02

最新评论