js读取本地视频文件,并预览base64,video

news/2024/7/20 3:47:31 标签: 小程序, javascript, vue.js, html5

一、思路:利用 FileReader.readAsDataURL()将本地文件转成base64的src,然后赋值给标签;

如果不知道怎么使用blob和FileReader,可以先预览前置文章 https://blog.csdn.net/qq_45301392/article/details/115623849

FileReader.readAsDataURL()
开始读取指定的Blob中的内容。一旦完成,result属性中将包含一个data: URL格式的Base64字符串以表示所读取文件的内容。

javascript">// 一个文件上传的回调 
// <input type="file" οnchange="onChange(event)">
function onChange(event) {
  var file = event.target.files[0];
  var reader = new FileReader();
  reader.onload = function(event) {
    // 文件里的文本会在这里被打印出来
    console.log(event.target.result)
  };
  reader.readAsDataURL(file);
}

需要注意 FileReader.readAsDataURL() 是异步方法,异步读取文件。所以不能马上使用,需要利用 onload() 方法异步获取本地文件的url;
FileReader.onload 处理load (en-US)事件。该事件在读取操作完成时触发。

二、案例代码:

javascript"><video v-if="videoSrc" width="320" height="240" controls>
   <source :src="videoSrc" type="video/mp4">
   <source :src="videoSrc" type="video/ogg">
   您的浏览器不支持Video标签。
 </video>

data() {
  return {
     videoSrc:''
   };
 },
    
// 上传文件
filechange(e){
   const resultFile = e.target.files;
   const aBlob = new Blob([resultFile[0]],{type:'video/mp4'})
   const reader = new FileReader();
   reader.onload=(ev)=>{
     this.videoSrc = ev.target.result
   }
   reader.readAsDataURL(aBlob)
 },

采坑代码:

javascript">  filechange(e){
     const resultFile = e.target.files;
     const aBlob = new Blob([resultFile[0]],{type:'video/mp4'})
     const reader = new FileReader();
     reader.readAsDataURL(aBlob)
     
     // 不能把异步操作赋值给标签
     this.videoSrc = reader.result; 
   },

http://www.niftyadmin.cn/n/909463.html

相关文章

git、回滚,.gitignore 忽略文件规则

Git 官网英文文档 https://git-scm.com/docs/gitignore 一、规则&#xff1a; *node_modules 过滤掉依赖文件包 或 node_modules/ 过滤掉依赖文件包里面所有文件 /public/ 忽略整个文件 !src/ 不忽略src文件及其内容 /public/img.png 忽略指定文件以斜杠/开头表示目录&…

Windows 10开发基础——指针事件和操作事件(一)

主要内容&#xff1a; 1.指针事件 2.操作事件 1.指针事件 指针事件由各种活动输入源引发&#xff0c;包括触摸、触摸板、笔和鼠标&#xff08;它们替代传统的鼠标事件&#xff09;。指针事件基于单一输入点&#xff08;手指、笔尖、鼠标光标&#xff09;&#xff0c;但不支持基…

create-react-app 脚手架,让react引入 @指向src

一、先暴露出webpack等相关配置文件 npm run eject二、修改 config/webpack.config.js 文件配置 const paths require(./paths); // config 中的一个文件resolve: {...alias: {...: paths.appSrc, // 增加这里} }三、引用 例&#xff1a;src / laylout / index.js 文件 imp…

基于eBox旋转编码器

在电子产品设计中&#xff0c;经常会用到旋转编码开关&#xff0c;比如数码电位器等&#xff0c;它的英文名翻译过来就是Rotary Encoder Switch。常见的有5pin和3pin产品。5pin实在左右旋转的基础上增加了向下按得功能。以EC11为例&#xff0c;常用语仪器仪表面板&#xff0c;音…

react css模块化导入使用

使用的是react-create-app脚手架&#xff1b; 一、期待用法 css: .layout-header{width: 80vw; }js: import styles from "./styles.module.css"const layout (props) >{return <div><div className{styles["layout-header"]}></di…

win32自绘按钮,使用GDI+(二)

一、解决上一篇的两个问题。 1、按钮背景透明 方法是&#xff0c;在绘制按钮之前&#xff0c;向按钮的父窗口发生WM_CTLCOLORBTN消息。该消息返回一个画刷句柄&#xff0c;系统使用该画刷句柄画出按钮的背景。所以我们在处理这个消息的时候&#xff0c;为系统返回一个空的画刷句…

手动配置 react-router-dom时报错,You should not use withRouter(Home)

一、问题场景&#xff1a; 在组件中想使用函数式路由跳转&#xff0c;根据官方文档查到&#xff1a;需要在该组件导出时 使用 withRouter(组件) 包裹组件&#xff1b;但是报错了&#xff01;&#xff1f; 官方文档 https://reactrouter.com/web/api/matchPath You can get ac…

URAL 1225 Flags 简单DP,一重循环

题意&#xff1a; 窗口可放n面红蓝白三种旗&#xff0c;规定同色不相邻&#xff0c;蓝在红白之间。共有多少种放置方法。 思路&#xff1a; 设dp[i][j]表示有i面旗&#xff0c;第i面旗填颜色j(j01表示红白)时的总数&#xff0c;第i面填j色时&#xff0c;i-1可以填1-j(红白相间)…