当前位置: 首页 > news >正文

结合el-upload修改支持上传图片、视频并预览

结合element plus的el-upload标签,实现上传图片和视频,并支持在线预览和放大
1、html部分

<el-form-item label="活动照片、视频"><el-uploadv-model:file-list="state.photoList":action="state.uploadUrl"accept=".jpg,.png,.jpeg,.mp4,.mov,.avi"list-type="picture-card":limit="10":on-success="handleUpload":class="state.photoList.length === 10 ? 'hideUpload' : ''"><el-icon><Plus /></el-icon><template #file="{ file }"><div><imgv-if="file.name.indexOf('.jpg') > -1|| file.name.indexOf('.png') > -1|| file.name.indexOf('.jpeg') > -1":src="file.url"alt=""class="el-upload-list__item-thumbnail" /><videov-else-if="file.name.indexOf('.mp4') > -1|| file.name.indexOf('.mov') > -1|| file.name.indexOf('.avi') > -1"class="el-upload-list__item-thumbnail"style="width: 100%;height: 100%;"autoplay:src="file.url"><source :src="file.url" type="video/mp4" /><source :src="file.url" type="video/mov" /><source :src="file.url" type="video/avi" /></video><span class="el-upload-list__item-actions"><span class="el-upload-list__item-preview" @click="handlePreview(file)"><el-icon><zoom-in /></el-icon></span><spanv-if="!state.disabledBtn"class="el-upload-list__item-delete"@click="handleRemove(file)"><el-icon><Delete /></el-icon></span></span></div></template></el-upload><el-dialog v-model="state.dialogVisible"><imgw-full:src="state.dialogImageFile.url"alt=""v-if="state.dialogImageFile.name.indexOf('.jpg') > -1|| state.dialogImageFile.name.indexOf('.png') > -1|| state.dialogImageFile.name.indexOf('.jpeg') > -1" /><videov-else-if="state.dialogImageFile.name.indexOf('.mp4') > -1|| state.dialogImageFile.name.indexOf('.mov') > -1|| state.dialogImageFile.name.indexOf('.avi') > -1"w-fullstyle="width: 100%;height: 100%;"controlsautoplay:src="state.dialogImageFile.url"><source :src="state.dialogImageFile.url" type="video/mp4" /><source :src="state.dialogImageFile.url" type="video/mov" /><source :src="state.dialogImageFile.url" type="video/avi" /></video></el-dialog>
</el-form-item>

2、js部分

const state = reactive({photoList: [] as any,           // 上传图片dialogVisible: false as boolean,dialogImageFile: '' as any,disabledBtn: false as boolean,
});// 预览图片和视频
const handlePreview = (file: any) => {state.dialogImageFile = file;state.dialogVisible = true;
}
// 删除图片视频
const handleRemove = (file: any) => {state.photoList.map((item: any, index: number) => {if(item.response && item.response.data) {if(item.response.data == file.response?.data || item.response.data == file.url) {state.photoList.splice(index, 1);}} else if(item.url) {if(item.url == file.response?.data || item.url == file.url) {state.photoList.splice(index, 1);}}})
}
// 上传图片
const handleUpload = (res: any) => {if(res.code != 0) {state.photoList.pop()ElMessage.error(res.msg)}
}

3、css部分

<style lang="scss" scoped>:deep(.hideUpload .el-upload--picture-card)  {display: none;}:deep(.el-upload--picture-card) {width: 243px;height: 180px;}:deep(.el-upload-list--picture-card .el-upload-list__item) {width: 243px;height: 180px;}
</style>
http://www.lryc.cn/news/267913.html

相关文章:

  • 1.SQL - 概述
  • GaussDB数据库表创建行访问控制策略
  • 提升设备巡检效率的关键:易点易动设备管理系统的应用
  • 【C++】STL 容器 - list 双向链表容器 ① ( 容器特点 | 容器操作时间复杂度 | 构造函数 )
  • [C/C++]数据结构 希尔排序
  • SQL进阶:子查询
  • 5、IDEA集成Git
  • oracle数据库sqlplus登录卡顿
  • 【C#】Visual Studio 2022 远程调试配置教程
  • LSTM的记忆能力实验
  • Unity之ShaderGraph如何实现瓶装水效果
  • 【python与机器学习3】感知机和门电路:与门,或门,非门等
  • 关键字:extends关键字
  • KEPServerEX 6 之【外篇-1】PTC-ThingWorx服务端软件安装 Tomcat10本地安装
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • 万能刷题小程序源码系统:功能强大+试题管理+题库分类+用户列表 附带完整的搭建教程
  • 5.2 显示窗口的内容(二)
  • SpringCloud 整合 Canal+RabbitMQ+Redis 实现数据监听
  • 一体机定制_工控触控一体机安卓主板方案
  • Android10.0 人脸解锁流程分析
  • P8598 [蓝桥杯 2013 省 AB] 错误票据
  • 【Android进阶篇】Android中PreferenceScreen的作用和详细用法介绍
  • test-03-java 单元测试框架 testNG 入门介绍 junit/junit5/testNG 详细对比
  • Maven 项目依赖仓库配置详解:pom.xml 中的 repositories 与 Maven 配置文件的调用顺序
  • JS深浅拷贝
  • uni-app 命令行创建
  • ImageJ二值图像处理:形态学和分割
  • 自动驾驶中的“雷达”
  • Web 3.0 是什么
  • 四种NAT的网络结构