浅谈基于vue3+element二次封装el-upload组件

闲话少说,先上二次封装el-upload代码

<template><div><el-uploadclass="upload-demo"ref="uploadImgRef"action="#":show-file-list="false":auto-upload="false"accept=".png, .jpg, .gif":on-change="changeFile"><img v-if="fileUrl" class="img-class" :src="fileUrl" alt=""><el-button type="primary">选择文件</el-button></el-upload></div>
</template><script lang="ts" setup>
import { ref, watch } from "vue";
import { ElMessage } from "element-plus";
import type { UploadFile, ElUpload } from "element-plus";const props = defineProps({url: {type: String,default: ''}
})const emits = defineEmits<{(e: "handleUpload", uploadFile: UploadFile, url: string): void;
}>();const acceptedTypes = ['image/png', 'image/jpeg', 'image/gif']
const fileUrl = ref<string>('')
const uploadImgRef = ref<InstanceType<typeof ElUpload> | null>(null);// 监听的作用,当用户编辑图片时,将图片展示再页面上
watch(() => props.url, (val) => {fileUrl.value = val
}, { immediate: true })// 添加上传文件
const changeFile = async (file: UploadFile) => {const isAccepted = acceptedTypes.includes(file?.raw?.type as string)if (!isAccepted) { // 校验图片格式ElMessage.warning('上传的图片格式不符,请核查后重新上传,谢谢!')} else  if (file.size && file.size > 1 * 1024 * 1024) { // 校验图片大小ElMessage.warning('图片大小不能超过1M,请核查后重新上传,谢谢!')} else {await checkResolution(file.raw) // 校验图片分辨率fileUrl.value = file.raw ? window.URL.createObjectURL(file.raw) : ''emits("handleUpload", file, fileUrl.value);}
};// 校验图片分辨率为500*500
const checkResolution = (file: any) => {return new Promise((resolve, reject) => {const image = new Image()image.src = URL.createObjectURL(file)image.onload = () => {const width = image.width;const height = image.height;if (width === 500 && height === 500) {resolve(file)} else {ElMessage.warning('图片分辨率不符合要求,请核查后重新上传,谢谢!')// reject('图片分辨率不符合要求')}}})
}const handleClear = () => {uploadImgRef.value?.clearFiles();
};defineExpose({// uploadImgRef,handleClear,
});
</script><style lang="scss" scoped>
p {margin: 0;padding: 0;color: red;
}.img-class {width: 100px;height: 100px;margin-right: 20px;
}:deep(.el-upload) {display: flex;align-items: center;justify-content: left;
}
</style>

 注意:1.当设置“auto-upload”为false时,beforeUpload、onSuccess、before-upload、on-success都不会触发,此时只会触发on-change;

        2.当设置“limit”为1时,on-change之后触发一次,on-change会随 limit 改变而改变,另外,当上传的文件超过limit时,会触发on-exceed方法;

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/57520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读_模型结构_LoRA

name_en: LoRA: Low-Rank Adaptation of Large Language Models name_ch: LORA&#xff1a;大语言模型的低阶自适应 paper_addr: http://arxiv.org/abs/2106.09685 date_read: 2023-08-17 date_publish: 2021-10-16 tags: [‘深度学习’,‘大模型’] author: Edward J. Hu cita…

自然语言处理(三):基于跳元模型的word2vec实现

跳元模型 回顾一下第一节讲过的跳元模型 跳元模型&#xff08;Skip-gram Model&#xff09;是一种用于学习词向量的模型&#xff0c;属于Word2Vec算法中的一种。它的目标是通过给定一个中心词语来预测其周围的上下文词语。 这节我们以跳元模型为例&#xff0c;讲解word2vec的…

java中的序列化和反序列化

1、序列化是干啥用的&#xff1f; 序列化的原本意图是希望对一个java对象做一下“变换”&#xff0c;变成字节序列&#xff0c;这样一来方便持久化存储到磁盘&#xff0c;另外变换成字节序列也更方便在网络运输和传播&#xff0c;所以概念上很好理解&#xff1a; 序列化&…

EasyExcel导出复杂表格到邮箱

EasyExcel导出复杂表格到邮箱 📔 千寻简笔记介绍 千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请帮我点一个Star~ 更新:支持在线阅读文章,根据发布日期分类。 文章…

python怎么提取视频中的音频

目录 操作步骤 1. 安装MoviePy库&#xff1a; 2. 导入MoviePy库和所需的模块&#xff1a; 3. 提取音频&#xff1a; 可能遇到的问题 1. 编解码器支持&#xff1a; 2. 依赖项安装&#xff1a; 3. 文件路径问题&#xff1a; 4. 内存消耗&#xff1a; 5. 输出文件大小&a…

Linux CentOS安装抓包解包工具Wireshark图形化界面

1.Wireshark介绍 Wireshark 是一个开源的网络协议分析工具&#xff0c;它能够捕获和分析网络数据包&#xff0c;提供深入的网络故障排除、网络性能优化和安全审计等功能。它支持跨多个操作系统&#xff0c;包括 Windows、macOS 和 Linux。 2.Wireshark主要使用方法 捕获数据…

计算机视觉入门 5)自定义卷积网络

系列文章目录 计算机视觉入门 1&#xff09;卷积分类器计算机视觉入门 2&#xff09;卷积和ReLU计算机视觉入门 3&#xff09;最大池化计算机视觉入门 4&#xff09;滑动窗口计算机视觉入门 5&#xff09;自定义卷积网络计算机视觉入门 6&#xff09; 数据集增强&#xff08;D…

数据结构之单链表java实现

基本概念 链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中指针链接次序实现的。和数组相比较&#xff0c;链表不需要指定大小&#xff0c;也不需要连续的地址。 单链表的基本设计思维是&#xff0c;利用结构体的设置&#xff0c…

24 | 紧跟时代步伐:微服务模式下API测试要怎么做?

微服务架构&#xff08;Microservice Architecture&#xff09; 微服务是一种架构风格。在微服务架构下&#xff0c;一个大型复杂软件系统不再由一个单体组成&#xff0c;而是由一系列相互独立的微服务组成。其中&#xff0c;各个微服务运行在自己的进程中&#xff0c;开发和部…

C# char曲线控件

一、char曲线显示随机数数据 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading; using Syst…

华为OD机试 - 荒岛求生(Java JS Python)

题目描述 一个荒岛上有若干人,岛上只有一条路通往岛屿两端的港口,大家需要逃往两端的港口才可逃生。 假定每个人移动的速度一样,且只可选择向左或向右逃生。 若两个人相遇,则进行决斗,战斗力强的能够活下来,并损失掉与对方相同的战斗力;若战斗力相同,则两人同归于尽…

Windows 转 mac 记录

初次从Windows转mac可能会不适应&#xff0c;建议先看看 【6分钟搞定MacBook】不懂时无所适从&#xff0c;学会后越用越爽&#xff01;_哔哩哔哩_bilibili 我主要是做一些补充记录 1、Windows的右键等于mac的双击触控板、control单击触控板 2、运行中的应用下方会有一个点&…

安卓webview,网页端生成安卓项目(极速生成)教程

安卓webview&#xff0c;网页端生成安卓项目&#xff08;极速生成&#xff09;教程 一&#xff0c;前言 当自己做了一个PC端的页面&#xff0c;也就是前端的页面&#xff0c;或者已经上服的页面&#xff0c;但也想生成一个安卓端供用户使用&#xff0c;本教程详细讲解如何把前…

【Spring】一文带你彻底搞懂IOC、AOP

目录 首先简单了解一下什么是spring框架 什么是IOC&#xff1f; 什么是依赖注入&#xff08;DI&#xff09;&#xff1f; 控制反转和依赖注入又有什么关系&#xff1f; AOP是什么&#xff1f; SpringAOP的实现 说了这么多抽象概念&#xff0c;举个实例方便理解 首先简单…

Spark整合hive的时候出错

Spark整合hive的时候 连接Hdfs不从我hive所在的机器上找&#xff0c;而是去连接我的集群里的另外两台机器 但是我的集群没有开 所以下面就一直在retry 猜测&#xff1a; 出现这个错误的原因可能与core-site.xml和hdfs-site.xml有关&#xff0c;因为这里面配置了集群的nameno…

高等职业学校物联网实训室建设方案

一、概述 1.1专业背景 物联网&#xff08;Internet of Things&#xff09;被称为继计算机、互联网之后世界信息产业第三次浪潮&#xff0c;它并非一个全新的技术领域&#xff0c;而是现代信息技术发展到一定阶段后出现的一种聚合性应用与技术提升&#xff0c;是随着传感网、通…

无涯教程-分类算法 - Python实现函数

为了在Python中实现SVM&#xff0c;无涯教程将从标准库导入开始&#xff0c;如下所示- import numpy as np import matplotlib.pyplot as plt from scipy import stats import seaborn as sns; sns.set() 接下来&#xff0c;从sklearn.dataset.sample_generator创建具有线性可…

Ceph源码解析:PG peering

集群中的设备异常(异常OSD的添加删除操作)&#xff0c;会导致PG的各个副本间出现数据的不一致现象&#xff0c;这时就需要进行数据的恢复&#xff0c;让所有的副本都达到一致的状态。 一、OSD的故障和处理办法&#xff1a; 1. OSD的故障种类&#xff1a; 故障A&#xff1a;一…

element-ui table表格滚动条拉到最右侧 表头与内容不能对齐

1.问题概述 当表格数据太多&#xff0c;会出现纵向滚动条和横向滚动条&#xff0c;把横向滚动条拉到最右侧时&#xff0c;会出现表头与内容不能对齐的现象。 2.解决方法 1.当页面数据加载完毕后&#xff0c;在后面加上 this.$nextTick(() > {this.$refs.table.doLayout()…

【微服务部署】01-Kubernetes部署流程

文章目录 部署1. Kubernetes是什么2. Kubernetes的优势3. 环境搭建4. 应用部署 部署 1. Kubernetes是什么 Kubernetes是一个用于自动部署、扩展和管理容器化应用程序的开源系统 2. Kubernetes的优势 自动化容器部署资源管理与容器调度服务注册发现与负载均衡内置配置与秘钥…