element upload上传视频,获取本地url地址和时长

2023-11-19

获取视频的时长参考了文章 https://www.cnblogs.com/65Seeker/p/11466824.html

1.**URL.createObjectURL() **静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。

(个人感觉可以把对象转换成url使用,十分灵活方便,特别是对于文件对象)。
2.loadedmetadata 当指定的音频/视频的元数据已加载时,会发生 loadedmetadata 事件。音频/视频的元数据包括:时长、尺寸(仅视频)以及文本轨道。

以上是原博主的说明。

结合项目修改了部分,获取图片的url地址也是一样的操作,记录一下。

上传组件

 <el-form-item label="上传视频:" prop="videoIntroduce" style="margin-top:20px">
     <el-upload ref="upload" 
           class="avatar-uploader" 
           :action="actionURL" 
           :show-file-list="false" 
           :on-change="beforeAvatarUpload"
           :auto-upload="false"
           :http-request="handleRequest" 
           :headers="myHeaders"
           accept=".mp4" >

         <video v-if="vUrl !='' && videoFlag == false" :src="vUrl" class="avatar" 
            controls="controls">您的浏览器不支持 video
            标签。
         </video>
         <i v-else-if="vUrl =='' && videoFlag == false" class="el-icon-plus 
            avatar-uploader-icon">
         </i>
         <el-progress v-if="videoFlag == true" type="circle" :percentage="progressPercent"
            style="margin-top:30px;">
         </el-progress>

      </el-upload>

 </el-form-item>

js

beforeAvatarUpload(event) {
        // 获取上传视频的本地localUrl
        var localUrl = null;
        if (window.createObjectURL != undefined) {
          // basic
          localUrl = window.createObjectURL(event.raw);
        } else if (window.URL != undefined) {
          // mozilla(firefox)
          localUrl = window.URL.createObjectURL(event.raw);
        } else if (window.webkitURL != undefined) {
          // webkit or chrome
          localUrl = window.webkitURL.createObjectURL(event.raw);
        }
        // 转换后的地址为 blob:http://xxx/7bf54338-74bb-47b9-9a7f-7a7093c716b5
       console.log(localUrl)

        //获取视频时长
        var url = URL.createObjectURL(event.raw);
        var audioElement = new Audio(url);
        var duration;
        audioElement.addEventListener("loadedmetadata", function(_event) {
          duration = audioElement.duration; //时长为秒,小数,182.36
          // this.$parent.$data.wDuration = parseInt(duration);
          console.log(duration);
        });
        if (event.raw.type === "video/mp4") {
          this.handleRequest() //验证通过,手动上传文件
          this.vUrl = localUrl
        } else {
          this.$message.error("只能上传mp4格式");
        }
      },

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

element upload上传视频,获取本地url地址和时长 的相关文章

随机推荐

  • 【Pytorch异常笔记】Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

    文章目录 异常描述 解决方法 开发环境 异常描述 OMP Error 15 Initializing libiomp5md dll but found libiomp5md dll already initialized OMP Hint
  • git 和远程服务器关联,Git远程服务器连接被拒绝

    我对这个错误感到疯狂 2天后我没有发现我的系统出了什么问题 我相信修复它非常容易 Git远程服务器连接被拒绝 当我尝试使用Git功能我得到的消息 连接到我的git服务器 无法打开连接 主机不存在 致命的 无法从远程存储库中读取 请确保您拥有
  • Android JNI1--C语言基础

    1 include 相当于java的导包操作 例如 include
  • vue中computed的属性对data中的属性赋值为undefined的原因

    场景 我在computed中return了一个值 然后在data中直接将它复制给另一个属性 结果data中的属性值为undefined 代码示例 timer为undefined 原因 在这里很容易想到是执行顺序的问题 computed中的属
  • sql server 中的日期计算,如当天周的第一天,当前月的第一天

    根据给定的日期 计算该日期在本月所在周数 每周的第一天为周日 但是在月末需要与下个月进行衔接 如 图2012年2月份 3月份的1 2 3号为2月份的第4周 而2月份的1 2 3 4为1月份的最后一周 第五周 declare datetime
  • linux线程间通讯----管道、信号

    进程间通讯机制 unix继承 管道 信号 system V IPC对象 共享内存 消息队列 信号灯集 1 管道 管道分为无名管道和有名管道 区别在于创建的管道是否在文件系统中不可见 无名不可见 有名可见 1 无名管道 特点 1 在创建之后再
  • 系统调用详解

    1 系统调用 1 系统调用就是为了让应用程序可以访问系统资源 每个操作系统都会提供一套接口供应用程序使用 这些接口通常通过中断来实现 例如在windows中是0x2E号中断作为系统调用入口 linux使用0x80号中断作为系统的调用的入口
  • IC数字后端

    在 innovus 里面 有时候我们需要控制 tie cell 的 fanout 和 net length 来避免 tie cell 可能出现 max transition 或者 max fanout 的违例 一般来说 只要 fanout
  • typeScritp的高级函数

    1 交叉类型 交叉类型是将多个类型合并为一个类型 这让我们可以把现有的多种类型叠加到一起成为一种类型 它包含了所需的所有类型的特性 例如 Person Serializable Loggable同时是 Person 和 Serializab
  • BSN唐斯斯:区块链是“新基建中的基建”

    5月16日 19 00 陀螺财经特别邀请到国家信息中心智慧城市发展研究中心副主任 区块链服务网络发展联盟常务副秘书长唐斯斯 为大家带来关于新基建下的区块链新机遇的思考 直播主题 新基建下的区块链新机遇 嘉宾 国家信息中心智慧城市发展研究中心
  • 智慧城管项目可行性研究报告

    后台回复 230915 可获得下载资料的方法 点击文后阅读原文 可获得下载资料的方法 欢迎加入智能交通技术群 联系方式 微信号18515441838
  • C语言中volatile关键字详解以及常见的面试问题

    编译器的优化 程序运行的优化可以分为硬件和软件 硬件上是在CPU和内存中间增加cache 来解决CPU和内存之间运行速率差异过大的问题 软件上则分为编译器优化和程序员优化 程序员优化是程序员在编写代码时 对代码的逻辑顺序进行合理安排 提升效
  • WIN10 修改用户下文件夹的名称

    转载note 我是为了解决正当防卫3不能存档 我的用户名当初设置的数字 转载的原因是 走了很多百度知道和经验的弯路 如果有人看到就别走了 我因为走了弯路前弄后弄导致原先的个人数据文件还丢失 只得跳出步骤新建用户 在PE下复制还有的数据 所以
  • 在windows系统安装linux

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 说明 二 步骤 1 利用WindowsADK安装windows 1 Windows 评估和部署工具包 ADK 包括 CopyPE 和 MakeWinPEM
  • no matching host key type found. Their offer: ssh-rsa 问题解决

    最近升级了Mac OS Ventura 13 0 1后发现ssh指定密钥登录服务器失败 no matching host key type found Their offer ssh rsa 进入当前用户的 ssh目录发现比之前系统多了一个
  • Ubuntu20.04安装qemu错误解决方法

    1 如果运行 configure显示没有找到pip sudo apt get install phthon3 pip 2 如果运行 configure显示 ninja error opening build log Permission d
  • com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别

    com mysql jdbc Driver 是 mysql connector java 5中的 com mysql cj jdbc Driver 是 mysql connector java 6中的 1 JDBC连接Mysql5 com
  • [共同学习] 平衡二叉树浅见

    平衡二叉树 平衡二叉树的概念 AVL树结点的定义 AVL树的插入 左左 右单旋 右右 左单旋 左右 先左旋 再右旋 右左 先右旋 再左旋 AVL树的验证 验证其为二叉搜索树 验证其为平衡树 AVL树的性能 AVL树的实现 感悟 以上 二叉搜
  • 三分钟实现一个react-router-dom5.0的路由拦截(导航守卫)

    不同于vue 通过在路由里设置meta元字符实现路由拦截 在使用 Vue 框架提供了路由守卫功能 用来在进入某个路有前进行一些校验工作 如果校验失败 就跳转到 404 或者登陆页面 比如 Vue 中的 beforeEnter 函数 rout
  • element upload上传视频,获取本地url地址和时长

    获取视频的时长参考了文章 https www cnblogs com 65Seeker p 11466824 html 1 URL createObjectURL 静态方法会创建一个 DOMString 其中包含一个表示参数中给出的对象的U