vue3 el-upload实现上传图片为base64格式并存储进表单

article/2025/8/21 5:03:30

在这里插入图片描述在这里插入图片描述

一、template

<el-form-item label="图片" prop="images"><el-uploadaction="#":accept="['image/jpeg', 'image/png', 'image/gif'].join(',')"list-type="picture-card":auto-upload="true":on-change="handleUploadChange":before-upload="beforeUpload":file-list="fileList":http-request="customUpload":on-remove="handleRemove":on-preview="handlePictureCardPreview"><el-icon><Plus /></el-icon></el-upload></el-form-item>
......
......
......
<el-dialog v-model="imgVisible" style="wigth: 60%; height: auto"><img :src="dialogImageUrl" alt="Preview Image" style="width: 100%" /></el-dialog>

二、js

import { Plus } from '@element-plus/icons-vue'
import { ElMessage } from 'element-plus'
import type { UploadProps } from 'element-plus'
......
......
......
const fileList = ref<Array<{ name: string; url: string }>>([]) // 用于显示已上传的图片列表(最多1张)// 限制上传文件类型和大小
const beforeUpload = (file) => {const isImage = file.type.startsWith('image/')const isLt2M = file.size / 1024 / 1024 < 2if (!isImage) {ElMessage.error('只能上传图片文件!')}if (!isLt2M) {ElMessage.error('图片大小不能超过2MB!')}return isImage && isLt2M
}// 自定义上传逻辑
const customUpload = async (options) => {const file = options.filereturn new Promise((resolve) => {const reader = new FileReader()reader.onload = (e) => {formData.value.images = e.target.result // 将Base64存入formDatafileList.value = [{name: file.name, // 保留文件名url: e.target.result as string // 完整的 Base64 URL}] // 更新文件列表(仅1张)resolve(true)}reader.readAsDataURL(file) // 转换为Base64})
}// 处理文件变化(可选)
const handleUploadChange = (file) => {console.log('当前文件:', file)
}// 处理删除操作
const handleRemove = () => {formData.value.images = '' // 清空Base64数据fileList.value = [] // 清空文件列表
}
const dialogImageUrl = ref('')
const imgVisible = ref(false)
const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile) => {dialogImageUrl.value = uploadFile.url!imgVisible.value = true
}

注意:在open表单的方法里初始化 fileList(编辑时回显图片)

// 初始化 fileList(编辑时回显图片)if (formData.value.images) {fileList.value = [{ url: formData.value.images }]}

注意:在需要的地方置空图片(例如关闭弹窗时)

 fileList.value = [] // 清空 fileList

http://www.hkcw.cn/article/uwoOAgYrau.shtml

相关文章

DMBOK对比知识点对比(3)

1.数据仓库建设方法(Inmon、Kimball) 数据仓库建设方法(Inmon、Kimball)P293方法

制造业的未来图景:超自动化与劳动力转型的双重革命

市场现状&#xff1a;传统制造业的转型阵痛 当前全球制造业正站在历史性变革的十字路口。埃森哲对552位工厂经理的全球调研显示&#xff0c;60%的受访者将劳动力转型视为首要战略任务​​&#xff0c;而63%的工厂正在加速部署自动化技术[1]。超过​75%的工厂经理​​认为&…

上传图片转成3D VR效果 / 用photo-sphere-viewer实现图片VR效果 / VR效果在项目中落地实践

系统简介 : 该系统为 react TS tailwindcss photo-sphere-viewer 的响应式 VR360 项目, 上传图片后可实现手动旋转 3D 图片,还包含了 6 贴图立方体展示和 6 贴图动态展示 目前为单图切换模式 全部页面概览 这是单面VR页面的代码(gif展示页面) import React, { useRef, u…

【论文精读】2024 ECCV--MGLD-VSR现实世界视频超分辨率(RealWorld VSR)

文章目录 一、摘要二、问题三、Method3.1 Latent Diffusion Model3.2 Motion-guided Diffusion Sampling3.3 Temporal-aware Decoder Fine-tuning 四、实验设置4.1 训练阶段4.2 训练数据 贡献总结 论文全称&#xff1a; Motion-Guided Latent Diffusion for Temporally Consis…

Linux安装mysql5.7详细教程

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

@高考考生和家长 别带违禁物品、勿信“押题”

2025年高考临近,一些不法分子受利益驱使,散布高考相关虚假信息,制造贩卖焦虑,组织实施诈骗,甚至诱导考生作弊,严重损害考生和家长切身利益,严重扰乱考试招生秩序。为此,教育部会同相关部门梳理汇总了近年来出现的一些典型案例,提醒广大考生和家长切勿相信谣言,谨防上…

Linux文件管理

1 查看文件内容 在 Linux 操作系统中&#xff0c;绝大多数的配置文件是以普通文本格式保存的&#xff0c;这些配置文件决定着系统及相关服务、程序的运行特性。查看及检索文本文件的内容&#xff0c;能够快速了解相关配置信息&#xff0c;以便为管理、维护操作系统提供有效的参…

法国回应“阵风”疑被击落说明什么 首次实战损毁引关注

法国军方首次对“阵风”战机疑似被击落事件作出回应,称如果情况属实,这将是该机型服役以来首次在实战中损毁。印度空军引进了这款战斗机。据媒体报道,法国国防部军方发言人5月27日在例行记者会上表示,若相关信息准确无误,这将是“阵风”战斗机自服役20年来首次在实战中受损…

python2解决反编译乱码

文章目录 得到.pyc文件调用以下脚本&#xff08;二进制转明文&#xff09;得到源码文件 得到.pyc文件 见文章&#xff1a;《python2反编译部分》 执行到这一步就能得到.pyc文件&#xff1a;3、 解包.exe文件&#xff08;以PyInstaller为例&#xff09; 调用以下脚本&#xf…

Vue中nextTick()的理解

目录 前言 一、JavaScript的事件循环机制 1.1执行栈 1.2任务队列 1.2.1宏任务 1.2.2微任务 1.3事件循环 1.4宏任务与微任务执行例子 二、Vue的异步更新策略 2.1为什么Vue选择异步更新 2.2Vue的异步更新实现 2.3nextTick 2.4使用nextTick的最佳时机 前言 在了解n…

详细说说Redis分布式锁和ZK分布式锁

在分布式系统中&#xff0c;分布式锁是实现资源互斥访问的核心机制。Redis 和 ZooKeeper&#xff08;ZK&#xff09;是两种常用的分布式锁实现方案&#xff0c;但它们的实现原理、优缺点和适用场景存在显著差异。 一、Redis 分布式锁 实现原理 基础命令&#xff1a; SET key v…

特朗普关税政策获批暂时恢复实施 法院裁决反转

当地时间5月29日,美国联邦巡回上诉法院批准特朗普政府的请求,暂时搁置了美国国际贸易法院此前做出的禁止执行特朗普政府依据《国际紧急经济权力法》对多国加征关税措施的裁决。联邦巡回上诉法院在裁决书中表示,在审议相关动议文件期间,美国国际贸易法院作出的判决和永久性禁…

官方通报小车超速坠桥致5死 事故原因正调查

官方通报小车超速坠桥致5死 事故原因正调查!5月19日18时23分,苏某驾驶一辆小汽车搭载4人沿环莞快速路行驶。在虎门一水库特大桥路段,车辆因超速冲破防撞沙桶和护栏后坠桥,导致车上5名司乘人员受伤。尽管被紧急送往医院抢救,但最终不幸全部死亡。事故发生后,市镇两级政府迅…

MTK平台-- 如何在屏幕关闭时过滤组播和广播的数据包

一 前言: 这段时间做了一些MTK平台的开发,关于一些WIFI的优化和大家分享下 当DUT(被测设备)连接到wifi网络时,有许多不重要的组播或广播数据包会在屏幕关闭时唤醒DUT的主机,为了降低功耗,DUT需要过滤这些数据包; MTK固件提供一些客户自定义的功能,如关闭过滤组播和…

交通违法拍照数据集,可识别接打电话,不系安全带的行为,支持YOLO,COCO JSON,VOC XML格式的标注数据集 最高正确识别率可达88.6%

交通违法拍照数据集 数据集概述 数据来源&#xff1a;交通监控摄像头、执法记录仪、公开数据集数据类型&#xff1a;图像、视频、元数据&#xff08;时间、地点、车辆信息&#xff09;违法类型标注&#xff1a;接打电话、未系安全带 数据采集与标注方法 采集设备&#xff1…

DMBOK对比知识点对比(2)

1.违背伦理进行数据处理的风险 违背伦理进行数据处理的风险风险

特朗普:5月30日将是马斯克在政府效率部最后一天

当地时间5月29日,美国总统特朗普在社交媒体上发文表示,5月30日将是埃隆马斯克在政府效率部的最后一天,他将于美国东部时间30日13时30分在椭圆形办公室与马斯克举行新闻发布会。美国企业家、政府效率部负责人埃隆马斯克28日在社交媒体上说,他作为“特殊政府雇员”的任期结束…

易经六十四卦象解释数据集分享!智能体知识库收集~

今天给大家分享一个易经六十四卦象解释数据集 &#xff0c;继续来积累AI相关的资料。 六十四卦&#xff0c;记载于《易经》&#xff0c;每一卦的图像均由两个八卦上下组合而成&#xff0c;每一卦各有六个爻。南宋朱熹说&#xff0c;先画八卦于内&#xff0c;后画八卦于外&#…

使用Zxing导出底部带有文字的二维码

1、引入依赖 <!-- Maven 依赖 --> <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version> </dependency>2、生成二维码 import com.google.zxing.BarcodeFormat; i…