Vue中使用js实现视频的预览,图片的预览,文字的预览_vue视频预览_小坡度的博客-程序员秘密

技术标签: 音视频  vue.js  javascript  

效果如图:

 

1.首先我们在模板里:
  <div v-if="textUrl" class="imgPreview">
    {
  { textUrl }}
  </div>
  <div v-if="videoUrl" class="imgPreview">
    <video alt="" style="width:300px;height:300px" controls>
      <source :src="videoUrl" type="video/mp4">
      <source :src="videoUrl" type="video/ogg">
    </video>
  </div>
  <div  v-if="photoUrl"  class="imgPreview">
    <img :src="photoUrl" alt="" style="width:300px;height:300px">
  </div>
</div>

这里通过v-if来显示不同的效果:

2.方法如下:

getAccessData(absolutePath,index) {
  this.picListIndex = index
  this.currentPicPath = absolutePath //路径
  let picIndex = absolutePath.lastIndexOf('.');
  this.ext = absolutePath.substr(picIndex + 1);//文件类型
  let param = new FormData();
  param.append('file', absolutePath);
  if (this.ext == 'jpg' || this.ext == 'png' || this.ext == 'gif' || this.ext == 'jpeg') {
//对应自己的文件服务接口,看好参数
    getFilePhoto(this.$route.query.token,param).then(res => {  、、
      let _this = this
      let blob = new Blob([res.data])
      var reader = new window.FileReader();
      reader.readAsDataURL(blob);
      reader.onloadend = function (e) {
        _this.photoUrl = e.target.result
        _this.textUrl= '';
        _this.videoUrl= '';
        console.log(_this.photoUrl)
      }
    })
  }
  if (this.ext == 'mp4' || this.ext == 'avi' || this.ext == 'rmvb' || this.ext == 'rm' || this.ext == 'flv') {
//对应自己的文件服务接口,看好参数
    getFilePhoto(this.$route.query.token,param).then(res => { 
      let _this = this
      let blob = new Blob([res.data],{type:'video/mp4'})
      var reader = new window.FileReader();
      reader.readAsDataURL(blob);
      reader.onloadend = function (e) {
        _this.videoUrl = e.target.result
        _this.textUrl= '';
        _this.photoUrl= '';
      }
    })
  }
  if (this.ext == 'txt' ||this. ext == 'doc' || this.ext == 'docx' || this.ext == 'xls' || this.ext == 'xlsx' || this.ext == 'pdf') {
//对应自己的文件服务接口,看好参数
    getFilePhoto(this.$route.query.token,param).then(res => {
      let _this = this
      let blob = new Blob([res.data])
      var reader = new window.FileReader();
      reader.readAsText(blob,'utf-8');
      reader.onloadend = function (e) {
        _this.textUrl = e.target.result
        _this.photoUrl= '';
        _this.videoUrl= '';
        console.log(_this.textUrl)
      }
    })
  }
}

一些细节:data里边的初始定义,方便全局调用。

接口里边参数的格式:

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hanshilong100/article/details/127746172

智能推荐

微信之获取微信的openid(二)详细版_weixin_38168838的博客-程序员秘密

第一步 :配置测试号,网页授权获取用户基本信息。该授权回掉页面域名为ngrok 映射的域名,我的映射地址是127.0.0.1:8080。 到此微信配置完毕,接下来就是直接上代码了2.用户同意授权    我是把这个url写在微信菜单下的,当进入这个页面的时候就让用户同意。注意:好像是静默授权的,用户不知道    ...

sql游标_weixin_30707875的博客-程序员秘密

有两个表A,B 通过游标把A表取出来的数据插入到B表中. use smjxc_fzd go truncate table costumepos.dbo.jb_lb declare @stype varchar(50),@sdesc varchar(50) declare my_cursor cursor for select stype,sdesc from tbS...

MySQL和hive建表区别,Hive中創建表(hive的使用和MySQL的使用很相似)_雅儿zZ的博客-程序员秘密

CREATE TABLE語句(不區分大小寫)Create Table是用於在Hive中創建表的語句,語法和示例如下:語法:CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name[(col_name data_type [COMMENT col_comment], ...)][COMMENT table_co...

【鸟哥的linux私房菜-学习笔记】进程管理_linux fork 鸟哥_jiange_zh的博客-程序员秘密

一、什么是进程 (process)在 Linux 系统当中:『触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的使用者与相关属性关系,给予这个 PID 一组有效的权限配置。』program:通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在;process:程

精度——洛谷P1033 自由落体_洛谷自由落体怎么做_largecub233的博客-程序员秘密

https://www.luogu.org/problem/show?pid=1033 这个题目卡我精度5555555555555555555555555 所以一定要把题目里给你的精度误差用起来; 我用的方法是算出球落到车顶和车底的区间; 然后通过区间算答案; 理论上是O(1); 但没他们O(n)快5555555555555555555;#include<map>#include<cm

读取一个文件,去除空行,显示除了以井号(#)开头的行以外的所有行_CodingAndCoCoding的博客-程序员秘密

思路:文件中存在空行应先去除空行取掉每一行的开头空格判断每一行是否以#号开头split( ) 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串split( ) 方法语法:str.split(str="", num=string.count(str)).str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。...

随便推点

volatile不能保证原子性_volatile 不保证原子性_Terrances的博客-程序员秘密

由于volatile保证了可见性,那么在每个线程中对inc自增完之后,在其他线程中都能看到修改后的值,所以有10个线程分别进行了1000次操作,那么最终inc的值应该是1000*10=10000。这里面就有一个误区了,volatile关键字能保证可见性没有错,但是上面的程序错在没能保证原子性。可见性只能保证每次读取的是最新的值,但是volatile没办法保证对变量的操作的原子性。面试完才知道。...

android-opengles3.0开发-5-绘制纹理_gles绘制纹理_wangyantaozzu的博客-程序员秘密

项目地址简介本文在上一篇文章的基础上完成纹理的绘制。绘制纹理流程也不复杂:一张作为纹理的图片编写相应的着色器准备图形和纹理的坐标将图片转换成纹理将纹理绑定到着色器指定属性的位置绘制图形和纹理编写着色器顶点着色器a_Position:图形定点坐标a_texCoord:对应的纹理坐标,其他位置的坐标 opengles 通过插值进行计算v_texCoord:输出到到片段...

Python进阶-函数默认参数,特别是参数传递为空列表_python传入空函数_幸福清风的博客-程序员秘密

这两天遇到函数默认参数的bug,在互联网上好好总结了一下:如非特别说明,下文均基于Python3一、默认参数python为了简化函数的调用,提供了默认参数机制:def pow(x, n = 2): r = 1 while n &amp;gt; 0: r *= x n -= 1 return r这样在调用pow函数时,就可以省略最后一个参数不写:pr...

_mysql.c:44:10: fatal error: 'my_config.h' file not found_martinue的博客-程序员秘密

前提安装 mysql mysql下载遇到的问题使用命令行 pip install mysql-python 安装时,报错_mysql.c:44:10: fatal error: 'my_config.h' file not found #include "my_config.h" ^~~~~~~~~~~~~ 1 error generated...

go语言之脚本命令的使用_叶不二的博客-程序员秘密

比如说我想在go项目启动的时候,也把java项目启动,那么我就可以把启动java项目的脚本命令放入到go项目中go语言也为我们提供了执行脚本命令的包 “os/exec”1.引入 "os/exec"包2.在go项目main函数中执行 c := "java -jar /test/demo.jar /test/demo.properties" //执行的脚本命令 cmd := ex

大人物道技术活动 - 人工智能_“大人物”技术_weixin_42719392的博客-程序员秘密

嗨森,大人物道开播了!#大人物道近期人工智能活动提醒#11月21日(周三)下午,大人物道的“百度智能边缘计算技术”交流沙龙在北京798举行:1、百度云智能边缘BIE产品策略及优势——王尊 百度云物联网部高级产品经理2、智能边缘开源OpenEdge的设计和实现——李乐丁 百度云物联网部首席架构师3、智能边缘应用及操作实践——王猛涛、王晓晨、董炫晨 百度云物联网部资深工程师4、智能边缘CF...

推荐文章

热门文章

相关标签