el-upload上传图片,视频可获取视频时长。

对element-ui组件的upload组件再一次封装,简单记录。下面是效果图。

注意点:该组件现在仅支持单图和单个视频上传。

<template><div :style="myStyle"><divclass="uploads":style="{width: upWith + 'px',height: upHeight + 'px',borderRadius: upBradius + 'px',}"><div v-if="pathUrl" class="isblock"><div v-show="utype == 1"><el-imageref="preview":style="{width: upWith + 'px',height: upHeight + 'px',borderRadius: upBradius + 'px',}":preview-src-list="[pathUrl]":src="pathUrl"></el-image><div class="imgs_prews"><divclass="imgs_prew":style="{width: upWith + 'px',height: upHeight + 'px',borderRadius: upBradius + 'px',}"><i @click="ylimg()" class="el-icon-view"></i><span></span><i @click="deleteimg()" class="el-icon-delete"></i></div></div></div><div v-show="utype == 2" style="display: flex"><div style="position: relative"><video:style="{width: upWith + 'px',height: upHeight + 'px',borderRadius: upBradius + 'px',}":src="pathUrl"controlspreload="auto"playsinline="true"></video></div><div style="position: absolute; right: 0px"><el-button @click="deleteimg()" size="mini">重新上传</el-button></div></div></div><el-uploadv-elseclass="avatar-uploader":style="{width: upWith + 'px',height: upHeight + 'px',borderRadius: upBradius + 'px',lineHeight: upHeight + 'px',}":action="updatehttp":headers="headers":data="updataimg"accept=".jpg, .jpeg, .png, .gif, .bmp, .JPG, .JPEG, .PBG, .GIF, .BMP":show-file-list="false":on-success="handleAvatarSuccess":before-upload="beforeAvatarUpload":on-progress="topprogressicon"><div v-show="isopens"><i class="el-icon-loading"></i>上传中...</div><i v-show="!isopens" class="el-icon-plus avatar-uploader-icon-sf">{{uptext}}</i></el-upload></div></div>
</template><script>
import { getToken } from "@/utils/auth";
export default {props: {//改变文字uptext: {type: String,default: "上传图片",},upWith: {type: Number,default: 100,},upHeight: {type: Number,default: 100,},upBradius: {type: Number,default: 16,},upimgUrl: {type: String,},//1图片 2视频utype: {type: Number,default: 1,},},computed: {myStyle() {return {"--upWith": this.upWith + "px","--upHeight": this.upHeight + "px","--upBradius": this.upBradius + "px",};},},data() {return {updatehttp: '', //上传的接口headers: {Authorization: "Bearer " + getToken(), //自己的token},updataimg: {fileKey: "", //上传时携带参数},isopens: false, //上传加载图isok: false, //上传成功失败,dataFile: {path: "",videoTime: "",},pathUrl: "",};},watch: {upimgUrl: {handler(val) {if (val) {this.pathUrl = val;} else {this.pathUrl = "";}},deep: true,immediate: true,},},methods: {getTimes(file) {var content = file;//获取上传视频时长var url = URL.createObjectURL(content);var audioElement = new Audio(url);audioElement.addEventListener("loadedmetadata", (_event) => {this.dataFile.videoTime = parseInt(audioElement.duration);});},//上传成功handleAvatarSuccess(res, file) {if (this.isok) {this.dataFile.path = res.url;this.pathUrl = res.url;this.isopens = false;this.$emit("changeName", this.dataFile);}},//文件上传时topprogressicon(event, file, fileList) {if (this.isok) {this.isopens = true;}},//上传之前的操作beforeAvatarUpload(file) {if (this.utype == 1 && file.type.includes("image")) {const isLt2M = file.size / 1024 / 1024 < 2;if (!isLt2M) {this.$message.error("上传图片大小不能超过 2MB!");this.isok = false;} else {this.isok = true;}}else if (this.utype == 2 && file.type.includes("video")) {this.getTimes(file);const isLt2M = file.size / 1024 / 1024 < 500;if (!isLt2M) {this.$message.error("上传视频大小不能超过 500MB!");this.isok = false;} else {this.isok = true;}} else {this.$message.error("上传类型错误!");this.isok = false;}},//删除deleteimg() {this.pathUrl = "";this.$emit("changeName", "");},//预览ylimg() {this.$refs.preview.clickHandler();},},
};
</script><style scoped>
.uploads {position: relative;
}.avatar-uploader /deep/ .el-upload {width: var(--upWith);height: var(--upHeight);border-radius: var(--upBradius);
}.avatar-uploader-icon-sf {color: #999999;
}.avatar-uploader {border: 1px dashed #d9d9d9;width: 100%;text-align: center;
}.isblock {width: 100%;
}.isblock:hover .imgs_prews {display: block;
}.imgs_prews {display: none;
}.imgs_prew {position: absolute;top: 0;width: 100%;display: flex;justify-content: center;align-items: center;background: rgba(0, 0, 0, 0.6);color: #fff;
}/* 左右图标 */
.imgs_prew i {display: inline-block;font-size: 20px;cursor: pointer;
}.imgs_prew span {width: 2px;height: 18px;margin: 0px 20px;background-color: #fff;
}
</style>

组件注册两种方法。

1.全局注册直接

//上传图片
import UploadFile from '@/components/UploadImg'
Vue.component('UploadFile', UploadFile)

2.单页面使用

import UploadFile from "../../../components/UploadImg";
export default {name: "Post",components: { UploadFile },
}

页面如何使用

<template><div>//注意上传视频要修改utype为2<UploadFile:utype='1':up-with="140"  :upimgUrl="form.companyHead":up-height="160":up-bradius="10"uptext="请上传封面图"@changeName="changUrl"></UploadFile></div>
</template>methods: {changUrl(e){//e.videoTime 获取到视频的时长if (e) {this.form.companyVideo = e.path;} else {this.form.companyVideo = "";}}},

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

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

相关文章

代码随想录算法训练营第36期DAY36

贪心好难&#xff0c;希望能坚持到柳暗花明那天。 DAY36 1005K次取反后最大化的数组和 自己的方法&#xff0c;注意越界条件放在最前面就好&#xff1a; class Solution {public: int largestSumAfterKNegations(vector<int>& nums, int k) { //自己的…

vue中数据已经改变了,但是table里面内容没更新渲染!

解决方案&#xff1a; 给table或者el-table标签上添加一个动态key值&#xff0c;只要数据发生改变&#xff0c;key值变动一下即可 标签上&#xff1a; :key“timeStamp” 初始data&#xff1a;timeStamp:0, 更新数据&#xff1a;this.timeStamp 这样每次更新数据&#xff…

ChannelHandler和ChannelPipeline之一

目录 ChannelHandler Channel的生命周期 ChannelHandler的生命周期 ChannelInboundHandler接口 ChannelOutboundHandler接口 ChannelHandler适配器 资源管理 ChannelPipeline接口 修改ChannelPipeline 触发事件 ChannelHandler Channel的生命周期 Channel定义了一组和…

整理前期PS问题

前面问题汇总 一、字体显示 字体不显示主要有三个原因&#xff0c;其实在这里面我已经打了“国风”两字&#xff0c; 字体太大&#xff0c;输入框小 只需要把输入框拉大/改变字体 经过字体修改还没有&#xff0c;那就是字体颜色和背景一致 二、字体横竖排变换 将文字打好…

java中的Map集合

一、Map集合概述 1、Map集合以键值对的形式存储元素&#xff0c;是将键映射到值的对象 2、要求&#xff1a; &#xff08;1&#xff09;一个键最多映射一个值 &#xff08;2&#xff09;键不能重复&#xff0c;值可以重复 二、HashMap类 1、是Map接口的实现类 2、特点&a…

Webpack源码泄露到Vue快速入门

前言 1.webpack 源码泄露 1.1漏洞简介 1.2存在泄露的站点 1.3 如何判断是否存在漏洞 方法1: 方法2: 1.4.如何将js.map文件还原为项目文件 1. 4.1查看npm版本 1.4.2 安装reverse-sourcemap 1. 4.3.检查是否安装 ​1. 4.4 使用reverse-sourcemap进行js.map文件还原操作…

深入解读HTTP状态码:分类、含义、应用场景与故障排查指南

HTTP状态码作为超文本传输协议(HTTP)响应的重要组成部分,为客户端与服务器之间的交互提供了清晰的状态反馈。本文将全面展开对HTTP状态码的深入解读,涵盖其分类、具体含义、典型应用场景以及在故障排查中的实用价值,旨在帮助开发者与运维人员更好地理解和应对各类HTTP响应…

Postman使用技巧

Postman是一款广泛使用的API开发和测试工具&#xff0c;专为简化Web服务API的开发、测试、文档编制和协作过程而设计。它支持各种HTTP请求方法&#xff0c;包括GET、POST、PUT、DELETE等&#xff0c;允许用户轻松地构建和发送请求&#xff0c;以及检查响应。 本文介绍几个提升效…

第4章 网络层

4.1网络层的功能 1.异网互联:使用路由器连接数据链路层和物理层均不同的网络。【路由器连接的设备物理层&#xff0c;数据链路层和网络层可以不同】 2.转发:从一个端口输入保存后选择另一个端口转发【微观】 3.路由选择:选择合适的路由线路【宏观】 4.SDN的基本概念: 数据平…

目前流行的前端框架有哪些?

目前流行的前端框架有很多&#xff0c;它们可以帮助开发者快速构建高质量的前端应用程序。本文将介绍一些目前比较受欢迎的前端框架&#xff0c;并分析它们的优缺点。 React React 是一个由 Facebook 开发的开源前端JavaScript库&#xff0c;用于构建用户界面&#xff0c;尤其…

Ollama本地运行 Mistral-7B-Instruct-v0.3

Ollama本地运行 Mistral-7B-Instruct-v0.3 0. 引言1. 运行 mistral:7b-instruct-v0.3-q8_02. 简单问个问题 0. 引言 Mixtral 5月23日发布了 Mistral-7B-Instruct-v0.3&#xff0c;支持 function calling&#xff0c;今天简单运行一下。 1. 运行 mistral:7b-instruct-v0.3-q8_…

【AI如何帮你编写测试用例并输出表格格式】

1、工具&#xff1a;顺便使用一款生成式AI即可&#xff0c;此处用的是ChatGPT&#xff0c;Kimi这两个工具试验。 2、首先要拿到需求文档&#xff0c;根据需求文档向AI发出如下指令&#xff08;Prompt&#xff09; “请根据下面这段需求&#xff0c;编写测试用例&#xff1a; …

python从0开始学习(十二)

目录 前言 1、字符串的常用操作 2、字符串的格式化 2.1 格式化字符串的详细格式&#xff08;针对format形式&#xff09; ​编辑 总结 前言 上一篇文章我们讲解了两道关于组合数据类型的题目&#xff0c;本篇文章我们将学习新的章节&#xff0c;学习字符串及正则表达式。 …

【Linux】centos7下载安装Python3.10,下载安装openssl1.1.1

目录 centos7下载安装Python&#xff08;版本3.10.14&#xff09; &#xff08;1&#xff09;网页下载python压缩包&#xff0c;并解压缩 &#xff08;2&#xff09;编译安装 Python在make altinstall时&#xff0c;报错及解决 &#xff08;3&#xff09;将安装目录和可执…

EM算法求解高斯混合模型参数公式推导

高斯混合模型介绍 高斯混合模型&#xff08;Gaussian Mixture Model&#xff0c;简称GMM&#xff09;是一种经典的概率模型&#xff0c;被广泛应用于数据挖掘、模式识别和机器学习等领域。它采用多个高斯分布组合来对数据进行建模&#xff0c;每个高斯分布对应于数据中的一个子…

ROCm上运行情感分析:使用卷积神经网络

15.3. 情感分析&#xff1a;使用卷积神经网络 — 动手学深度学习 2.0.0 documentation (d2l.ai) 代码 import torch from torch import nn from d2l import torch as d2lbatch_size 64 train_iter, test_iter, vocab d2l.load_data_imdb(batch_size)def corr1d(X, K):w K.s…

分布式任务调度内的 MySQL 分页查询优化

作者&#xff1a;vivo 互联网数据库团队- Qiu Xinbo 本文主要通过图示介绍了用主键进行分片查询的过程&#xff0c;介绍了主键分页查询存在SQL性能问题&#xff0c;如何去创建高效的索引去优化主键分页查询的SQL性能问题。 对于数据分布不均如何发现&#xff0c;提供了一些SQL…

C语言初阶——5操作符

一、算数操作符 除了% 操作符之外&#xff0c;其他的几个操作符可以作用于整数和浮点数。对于/ 操作符如果两个操作数都为整数&#xff0c;执行整数除法。而只要有浮点数执行的就是浮点数除 法。% 操作符的两个操作数必须为整数。返回的是整除之后的余数。 1、类型转换 C语言…

Simplicity Studui V5 新安装后无法Product Updates

之前&#xff08;2021年&#xff09;在SiliconLabs官网下载了SSV5&#xff0c;安装包我也保存在硬盘了&#xff0c;最近换了台电脑安装SSV5后安装 SDK之前必须Product Updates&#xff0c;但死活安装不上&#xff0c;老是提示发生了错误。来来回回卸载安装几十遍&#xff0c;后…

瓦解信息茧房,IPWO打破“墙”的限制

国外与国内的网络之间隔着一道无形的“墙”&#xff0c;这面“墙”让我们避免了海外不法分子的窥视&#xff0c;保护了我们的网络隐私。但是&#xff0c;“墙”的存在同样阻止了我们访问全球网络&#xff0c;获取海外资源&#xff0c;形成巨大的信息茧房。 越来越多的人渴望撕开…