input标签进行媒体文件上传及调用摄像头或麦克风

文件上传

  1. 在项目开发中,若需要进行文件文件上传时,令input标签的type属性值为file即可
    <input type="file"/>
    

上传文件类型

  1. 当需要限制上传文件的类型时,就需要使用input标签的accept属性;accept属性:规定通过文件上传来提交的文件的类型。 (只针对type="file"
accept属性值值描述
audio/*接受所有的声音文件
video/*接受所有的视频文件
image/*接受所有的图像文件
MIME_type一个有效的 MIME 类型,不带参数

调用摄像头或麦克风

  1. capture属性:用于调用设备的摄像头或麦克风

    • accept="image/*"accept="video/*"时:

      capture属性值描述
      user手机前置摄像头
      environment手机后置摄像头
    • accept="audio"时:只调用麦克风设备,capture属性值可以为任意值

    • 当input没有capture属性时,根据accppt类型给出文件夹选项以及摄像头或者录音机选项

    • input含有multiple属性时访问文件夹可勾选多文件,调用系统摄像头或者录音机都只是单文件,无multiple时都只能单文件

使用前置摄像头录制视频,并获取视频base64

  1. HTML部分
    <!-- 当input的值发生改变时,触发change事件,调用changeVideo函数 -->
    <input
      type="file"
      accept="video/*"
      capture="user"
      ref="videoFile"
      @change="changeVideo"
      class="file-input"
      hidden
    />
    
  2. js部分
    changeVideo () {
    	// 获取到input标签的上传的文件对象
    	const files = this.$refs.videoFile.files;
    
    	// 通过FileReader构造函数创建一个新的FileReader对象
    	let reader = new FileReader();
    	
    	// 通过新创建的FileReader对象获取input元素上传的files文件对象,并使用readAsDataURL()方法读取
    	reader.readAsDataURL(file);
    
    	// 这是一个异步操作,当读取完成后,result属性中将包含一个data: URL格式的Base64字符串以表示所读取文件的内容
    	reader.onload = () => {
    		// 输出文件base64
       		console.log(reader.result)
        }
    }
    

FileReader的部分实例方法

  1. readAsArrayBuffer():读取指定的Blob或File内容,当读取操作完成时触发loadend事件,同时result属性中将包含一个ArrayBuffer对象以表示所读取文件的数据。
  2. readAsBinaryString():读取指定的Blob或File内容,当读取操作完成时触发loadend事件,同时result属性中将包含所读取文件原始二进制格式。
  3. readAsDataURL():读取指定的Blob或File内容,当读取操作完成时触发loadend事件,同时result属性中将包含一个data: URL格式的Base64字符串以表示所读取文件的内容。
  4. 以上三个方法参数均为即将被读取的Blob或File对象
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值