Element UI 上传文件 el-upload —— 手动上传文件,限制上传文件数量,文件类型校验等

简介: Element UI 上传文件 el-upload —— 手动上传文件,限制上传文件数量,文件类型校验等

手动上传

:auto-upload="false"
this.$refs.upload.submit();

选择文件时,限定文件类型

accept=".xlsx,.xls"

选择文件时,限制文件总数

:limit="1"

超出文件总数时,触发

:on-exceed='limitCheck'
// 选择的文件超出限制的文件总数量时触发
limitCheck() {
    this.$message.warning('每次只能上传一个文件')
},

文件上传前的文件类型和文件大小校验

:before-upload="beforeUpload"
// 文件上传前的校验 —— 常见的校验有:校验文件类型,文件大小
beforeUpload(file) {
    // 允许上传的文件格式列表
    let acceptList = ["xlsx", "xls"]
    // 根据文件名获取文件的后缀名
    let fileType = file.name.split('.').pop().toLowerCase()
    // 判断文件格式是否符合要求
    if (acceptList.indexOf(fileType) === -1) {
        this.$message.error('只能上传 xlsx/xls 格式的文件 !');
        return false
    }
    // 判断文件大小是否符合要求
    if (file.size / 1024 / 1024 > 1) {
        this.$message.error('上传文件大小不能超过 1M !');
        return false
    }
}

完整范例代码

<template>
    <div style="padding: 30px">
        <el-upload
                ref="upload"
                accept=".xlsx,.xls"
                :limit="1"
                :on-exceed='limitCheck'
                :file-list="fileList"
                :on-remove="removeFile"
                :on-change="fileChange"
                :auto-upload="false"
                :before-upload="beforeUpload"
                action="https://jsonplaceholder.typicode.com/posts/"
        >
            <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
            <el-button :disabled="fileList.length<1" style="margin-left: 10px;" size="small" type="success"
                       @click="submitUpload">上传到服务器
            </el-button>
            <div slot="tip" class="el-upload__tip">只能上传 xlsx/xls 文件,且不超过1M</div>
        </el-upload>
    </div>
</template>
<script>
    export default {
        data() {
            return {
                fileList: []
            }
        },
        methods: {
            // 选择文件、移除文件、上传文件成功/失败后,都会触发
            fileChange(file, fileList) {
                this.fileList = fileList
            },
            // 移除文件时触发
            removeFile(file, fileList) {
                this.fileList = fileList
            },
            // 选择的文件超出限制的文件总数量时触发
            limitCheck() {
                this.$message.warning('每次只能上传一个文件')
            },
            // 点击上传按钮
            submitUpload() {
                // 将文件上传到服务器,先触发beforeUpload事件,对上传的文件进行校验,校验通过后才会上传
                this.$refs.upload.submit();
            },
            // 文件上传前的校验 —— 常见的校验有:校验文件类型,文件大小
            beforeUpload(file) {
                // 允许上传的文件格式列表
                let acceptList = ["xlsx", "xls"]
                // 根据文件名获取文件的后缀名
                let fileType = file.name.split('.').pop().toLowerCase()
                // 判断文件格式是否符合要求
                if (acceptList.indexOf(fileType) === -1) {
                    this.$message.error('只能上传 xlsx/xls 格式的文件 !');
                    return false
                }
                // 判断文件大小是否符合要求
                if (file.size / 1024 / 1024 > 1) {
                    this.$message.error('上传文件大小不能超过 1M !');
                    return false
                }
            }
        },
    }
</script>
<style scoped>
</style>


目录
相关文章
|
14天前
|
API UED 容器
深入探索 Element UI:自定义滚动条与弹出层管理的技巧
在这篇博客中,我们将深入探讨 Element UI 中的自定义滚动条及弹出层管理技巧。文章详细介绍了 el-scrollbar 组件的使用和参数设置,以及 PopupManager 如何有效管理弹出层的 z-index。我们还将探讨如何实现灵活的全屏组件,利用 vue-popper 创建自定义弹出层,最后介绍 ClickOutside 指令的用法。这些高级技巧将帮助你提升 Element UI 应用程序的用户体验与交互灵活性。
84 1
深入探索 Element UI:自定义滚动条与弹出层管理的技巧
|
13天前
|
JavaScript 索引
Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案
Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案
75 0
|
3月前
|
开发者 C# Android开发
明白吗?Xamarin与Native的终极对决:究竟哪种开发方式更适合您的项目需求,让我们一探究竟!
【8月更文挑战第31天】随着移动应用开发的普及,开发者面临多种技术选择。本文对比了跨平台解决方案Xamarin与原生开发方式的优势与劣势。Xamarin使用C#进行跨平台开发,代码复用率高,可大幅降低开发成本;但因基于抽象层,可能影响性能。原生开发则充分利用平台特性,提供最佳用户体验,但需维护多套代码库,增加工作量。开发者应根据项目需求、团队技能和预算综合考量,选择最适合的开发方式。
99 0
|
3月前
|
JavaScript 前端开发 开发者
决战前端之巅!Element UI与Vuetify谁才是Vue.js组件界的霸主?一场关于颜值与实力的较量!
【8月更文挑战第30天】本文对比了两款热门的Vue.js组件库——Element UI与Vuetify。Element UI由饿了么团队打造,提供多种高质量UI组件,设计简洁大方。Vuetify基于Material Design规范,支持Vue.js 2.0及3.0版本,具备前瞻性。两者均涵盖表单、导航、数据展示等组件,Element UI配置选项丰富,而Vuetify则提供了更深层的样式定制功能。开发者可根据项目需求及个人偏好选择合适的组件库。
195 0
|
3月前
|
JavaScript 开发者 UED
Vue.js组件库大对决:Element UI与Vuetify,开发者的罗密欧与朱丽叶!
【8月更文挑战第30天】Element UI和Vuetify是Vue.js开发中的热门组件库,前者简洁高效,后者遵循Material Design,国际化程度高。两者均提供丰富的组件支持,但Vuetify组件更多样,设计更灵活;Element UI在性能和中文支持上更优。文档方面,Element UI更直观易懂,而Vuetify配置灵活但学习成本稍高。选择时需综合考虑项目需求、团队背景及设计风格,以达到最佳开发效果。
149 0
|
6月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
|
6月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
|
6月前
|
前端开发 JavaScript API
SAP UI5 sap.ui.require.toUrl 的作用介绍
SAP UI5 sap.ui.require.toUrl 的作用介绍
|
6月前
|
JSON 前端开发 测试技术
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版