vue实现移动端input上传视频、音频

vue移动端input上传视频、音频,供大家参考,具体内容如下

html部分

<div class="title">现场视频</div>
  <div class="upLoad">
   <label for="pop_video" id="labelr">
    <video id="videoId" controls width="100%"></video>
    <input style="display:none;" id="pop_video" type="file" accept="video/*" capture="camcorder" v-on:change="getVideo(event, '2')" name="fileTrans" ref="file" value="">
    <div class="inputVideo">上传视频</div>
   </label>
  </div>
  <div class="title">现场音频频</div>
  <div class="upLoad">
   <label for="pop_audio" id="labelr">
    <audio id="audioId" controls width="100%"></audio>
    <input style="display:none;" id="pop_audio" type="file" accept="audio/*" capture="camcorder" v-on:change="getAudio(event, '2')" name="fileTrans" ref="file" value="">
    <div class="inputAudio">上传音频</div>
   </label>
</div>

js部分

getVideo (ev, typer) {
   let taht = this
   //获取上传文件标签
   let filesId = document.getElementById('pop_video');
   //获取音频标签
   let videoId = document.getElementById('videoId')
   //把当前files[0]传给getFileURL方法, getFileURL方法对其做一处理
   let url = this.getFileURL(filesId.files[0])
   if (url) {
    //给video标签设置src
    videoId.src = url
   }
   let formData = new FormData();
   formData.append("file", filesId.files[0]);
   upload(this.token, formData).then(res => {
    console.log(res)
    if (res.data.code === 0) {
     this.videoURL = res.data.data.url
    }
   })
   console.log(url)
  },
  getAudio (ev, typer) {
   let taht = this
   //获取上传文件标签
   let filesId = document.getElementById('pop_audio');
   //获取音频标签
   let audioId = document.getElementById('audioId')
   //把当前files[0]传给getFileURL方法, getFileURL方法对其做一处理
   let url = this.getFileURL(filesId.files[0])
   if (url) {
    //给video标签设置src
    audioId.src = url
   }
   let formData = new FormData();
   formData.append("file", filesId.files[0]);
   upload(this.token, formData).then(res => {
    console.log(res)
    if (res.data.code === 0) {
     this.audioURL = res.data.data.url
    }
   })
   console.log(url)
  },
  getFileURL (file) {
   let getUrl = null
   if (window.createObjectURL != undefined) {
    //basic
    getUrl = window.createObjectURL(file)
   } else if (window.URL != undefined) {//window.URL 标准定义
    //mozilla(firefox)
    //获取一个http格式的url路径,这个时候就可以设置<img>中的显示
    getUrl = window.URL.createObjectURL(file)
   } else if (window.webkitURL != undefined) {//window.webkitURL是webkit的内核
    //webkit or chrome
    getUrl = window.webkitURL.createObjectURL(file)
   }
   return getUrl 

   //video 标签的 duration属性,获取当前视频的长度
   // let duration = videoId.duration
   // if (Math.floor(duration) > 60) {
   //  that.layer.msg('视频不能大于60秒')
   // }
  },

css部分

#inspect .upLoad {
 background-color:#fff;
 /* height: 1.5rem; */
 text-align: left;
 padding: 0.3rem;
}

#inspect .inputVideo {
 background-color: #00cc66;
 color: #fff;
 font-size: 0.32rem;
 width: 30%;
 height: 0.8rem;
 line-height: 0.8rem;
 border-radius: 0.4rem;
 text-align: center;
 margin: 0 auto;
}

#inspect .inputAudio {
 background-color: #5cadff;
 color: #fff;
 font-size: 0.32rem;
 width: 30%;
 height: 0.8rem;
 line-height: 0.8rem;
 border-radius: 0.4rem;
 text-align: center;
 margin: 0 auto;
}

效果图

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

更多vue学习教程请阅读专题《vue实战教程》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Vue移动端实现图片上传及超过1M压缩上传

    本文实例为大家分享了Vue移动端实现图片上传及超过1M压缩上传的具体代码,供大家参考,具体内容如下 1.实现效果 2.代码 Html: <div class="choosePic"> <div class="pics" :style="{backgroundImage: 'url(' + form.erpRecords + ')'}"> <input type="file" class="

  • Vue的移动端多图上传插件vue-easy-uploader的示例代码

    前言 这段时间赶项目,需要用到多文件上传,用Vue进行前端项目开发.在网上找了不少插件,都不是十分满意,有的使用起来繁琐,有的不能适应本项目.就打算自己折腾一下,写一个Vue的上传插件,一劳永逸,以后可以直接使用. 目前vue-easy-uploader已上传到GitHub和NPM,使用起来方便简单,不需要繁琐的配置即可投入生产,不过需要后端配合,实现上传接口. 本项目GitHub地址: https://github.com/quanzaiyu/vue-easy-uploader 本项目NPM地

  • vue2实现移动端上传、预览、压缩图片解决拍照旋转问题

    因为最近遇到个移动端上传头像的需求,上传到后台的数据是base64位,其中为了提高用户体验,把比较大的图片用canvas进行压缩之后再进行上传.在移动端调用拍照功能时,会发生图片旋转,为了解决这个问题引入了exif去判断拍照时的信息再去处理图片,这是个很好的插件.关于exif.js可以去他的GitHub上了解,这边直接 npm install exif-js --save   安装,然后import一下就可以使用了.以下就是源码,可以直接使用. <template> <div> &

  • vue实现移动端图片上传功能

    本文实例为大家分享了vue实现移动端图片上传的具体代码,供大家参考,具体内容如下 <template> <div class="box"> <div class="upDiv"> {{labTex}} //标题 //上传按钮 <input ref="uploadInput" type="file" class='upinp' name="file" value=&q

  • 移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能

    面向百度开发 html <van-uploader :after-read="onRead" accept="image/*"> <img src="./icon_input_add.png" /> </van-uploader> js data() { return { files: { name: "", type: "" }, headerImage: null,

  • Vue.js 2.0 移动端拍照压缩图片上传预览功能

    在学习和使用Vue.js 2.0 的过程中遇到不少不一样的地方,本来移动端开发H5应用,准备将mui框架和Vue.js+vue-router+vuex 全家桶结合起来使用,但是在拍照上传的实现过程中遇到了无法调用plus的H5+接口的问题,所以最后拍照上传功能还是使用input file方式里解决的.但是内心还是不甘心的,由于项目进度推进,迭代版本,所以不得不放弃,后续可能我将此功能使用调用H5+接口实现. 首先我来讲我实现这个拍照预览压缩上传的思路,准确的说应该是拍照或选择图片压缩之后预览及上

  • Vue2.0 实现移动端图片上传功能

    本文主要介绍VUE2.0图片上传功能的实现.原理是通过js控制和input标签的方式完成这一效果,无需加载其他组件. 效果图如下: 1.DOM代码 1.1input标签 由于我们是通过input标签的方式进行图片上传的,但是input标签的样式有点丑,所以我们隐藏该样式display: none <input @change="fileChange($event)" type="file" id="upload_file" multiple

  • vue实现移动端图片裁剪上传功能

    本文实例为大家分享了vue移动端图片裁剪上传的具体代码,供大家参考,具体内容如下 1. 安装cropperjs依赖库 npm install cropperjs 2. 编写组件SimpleCropper.vue <template> <div class="v-simple-cropper"> <slot> <button @click="upload">上传图片</button> </slot>

  • Vue.js 2.0 移动端拍照压缩图片预览及上传实例

    在学习和使用Vue.js 2.0 的过程中遇到不少不一样的地方,本来移动端开发H5应用,准备将mui框架和Vue.js+vue-router+vuex 全家桶结合起来使用,但是在拍照上传的实现过程中遇到了无法调用plus的H5+接口的问题,所以最后拍照上传功能还是使用input file方式里解决的.但是内心还是不甘心的,由于项目进度推进,迭代版本,所以不得不放弃,后续可能我将此功能使用调用H5+接口实现. 首先我来讲我实现这个拍照预览压缩上传的思路,准确的说应该是拍照或选择图片压缩之后预览及上

  • vue+vux实现移动端文件上传样式

    样式使用的是vux的cell组件 如下图的官方demo样子 上图的样式需要修改一下,把 保护中 修改成一个图片 并且内嵌一个input type='file'  就可以拥有好看的样式的文件上传了 <!--引入组件--> import { Cell } from 'vux' <!--官网的组件是这么写的--> <group> <cell title="title" value="value"></cell>

随机推荐