vue+elementUI同时上传视频和图片并回显

您所在的位置:网站首页 小学生科技制作的图片和视频或视频 vue+elementUI同时上传视频和图片并回显

vue+elementUI同时上传视频和图片并回显

2024-07-17 17:24:50| 来源: 网络整理| 查看: 265

1.效果 在这里插入图片描述 2.数据结构;根据name或url后缀来判断是图片或者视频类型

fileList = [ {name:'123.mp4',url:'123.mp4'}, {name:'124.png',url:'https://img0.baidu.com/it/u=1942253063,3807598283&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'}, {name:'hahagwe.png',url:'https://img0.baidu.com/it/u=1040225459,210273596&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400'}, ]

3.判断是否是图片或者视频的方法

//图片视频匹配 matchType(name){ //后缀获取 let suffic = ''; //获取类型结果 let result = ''; try { let fileArr = name.split('.'); suffic = fileArr[fileArr.length - 1] // console.log('suffic',suffic); } catch (error) { suffic = '' } //图片格式 var imgList = ['png','jpg','jpeg','bmp','gif']; //进行图片匹配 result = imgList.some(item=>{ return item === suffic }) // console.log('结果',result); if(result){ result = 'image'; // console.log('结果',result); return result } },

4.全部代码展示—>子组件

您的浏览器不支持视频播放 import { policy1 } from '@/api/oss'//oss上传接口 export default { props: { //是否需要上传图片(false:需要,true:不需要,只能查看图片不能做任何操作) isShowImg: { type: Boolean, default: false }, //个数显示 limit:{ type:Number, default: 5 }, maxlength:{ type:Number }, value: Array, //最大上传图片数量 maxCount: { type: Number, default: 5 }, //宽度 w: { type: String, // default:'100px' }, //高度 h: { type: String, // default:'100px' }, paddings: { type: String, } }, data: function() { return { srcList:[], videoFlag: false, isShow:true, videoUploadPercent: 0, count:5, videis: false, dataObj: { policy: '', signature: '', key: '', ossaccessKeyId: '', dir: '', host: '' }, dialogVisible: false, dialogImageUrl: [] } }, computed: { fileList() { this.$emit('videoData23',this.value); return this.value; } }, mounted() { if(this.fileList.length this.isShow = false; } }, methods: { //图片视频匹配 matchType(name){ //后缀获取 let suffic = ''; //获取类型结果 let result = ''; try { let fileArr = name.split('.'); suffic = fileArr[fileArr.length - 1] // console.log('suffic',suffic); } catch (error) { suffic = '' } //图片格式 var imgList = ['png','jpg','jpeg','bmp','gif']; //进行图片匹配 result = imgList.some(item=>{ return item === suffic }) // console.log('结果',result); if(result){ result = 'image'; // console.log('结果',result); return result } }, //删除视频/图片 forkImage(index) { var data = this.fileList.splice(index, 1); this.$emit("delFile", this.fileList); if(this.fileList.length this.isShow = false; } }, change(){ // console.log('点',this.fileList) if(this.fileList.length this.isShow = false; } }, getUUID() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => { return (c === 'x' ? (Math.random() * 16 | 0) : ('r&0x3' | '0x8')).toString(16) }) }, emitInput(fileList) { let value = []; for (let i = 0; i this.emitInput(fileList) }, //上传图片/视频成功后的操作 handleUploadSuccess(res, file) { console.log("成功后", file) let url = this.dataObj.host + '/' + this.dataObj.key.replace('${filename}', file.name); this.fileList.push({ name: file.name, url: url }); this.emitInput(this.fileList); this.dialogVisible = true; this.videoUploadPercent = 0; if(this.fileList.length this.isShow = false; this.$message({ message: '最多只能上传' + this.limit + '个视频/张图片', type: 'warning', duration: 1000 }); } }, //进度条 uploadVideoProcess(event, file, fileList) { // this.videoFlag = true; this.videoUploadPercent = Math.floor(event.percent); }, beforeUpload(file) { // this.videoFlag = true; //视频/图片校验 if (['video/mp4', 'video/ogg', 'video/flv','video/avi','video/wmv','video/rmvb','image/jpeg','image/PNG','image/gif'].indexOf(file.type) == -1) { this.$message.error('请上传正确的视频/图片格式'); return false; } //以下为oss上传接口 // const _self = this; // return new Promise((resolve, reject) => { // policy1().then(response => { // _self.dataObj.policy = response.data.policy; // _self.dataObj.signature = response.data.signature; // _self.dataObj.ossaccessKeyId = response.data.accessid; // _self.dataObj.key = response.data.dir + this.getUUID() + '_${filename}'; // _self.dataObj.dir = response.data.dir; // _self.dataObj.host = response.data.host; // // _self.dataObj.callback = response.data.callback; // resolve(true) // }).catch(err => { // console.log(err) // reject(false) // }) // }) }, } } .warpss { display: inline-block; border: 1px dashed #DEE5ED; } ::v-deep.el-upload-list { display: none; } .el-upload-video { width: 149px; height: 149px; border: 1px dashed #d9d9d9; border-radius: 6px; cursor: pointer; position: relative; overflow: hidden; } .el-upload-video-i { font-size: 20px; font-weight: bold; padding-top: 43px; color: #8c939d; width: 50px; height: 50px; line-height: 50px; text-align: center; } //视频 .img-list-item { position: relative; margin: auto; } .img-list-item i.del-img { width: 20px; height: 20px; display: inline-block; background: rgba(0, 0, 0, .6); background-image: url(../assets/images/close.png); background-size: 18px; background-repeat: no-repeat; background-position: 50%; position: absolute; top: 0; right: 9px; }

5.父组件(记得在父组件里面引入并注册子组件哦,在这就写了哈,各位宝儿~)

export default { data(){ return{ slider_image:[ {name:'123.mp4',url:'123.mp4'}, {name:'124.png',url:'https://img0.baidu.com/it/u=1942253063,3807598283&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'}, {name:'hahagwe.png',url:'https://img0.baidu.com/it/u=1040225459,210273596&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400'}, ] }, methods:{ } }


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭