element ui 上传视频2

 模板部分

<template>
  <div style="display:flex">
    <el-upload
      class="avatar-uploader"
      :action="uploadUrl"
      :data="dataObj"
      :with-credentials="true"
      :multiple="false"
      :show-file-list="false"
      :http-request="handleVideoSuccess"
      :on-change="uploadVideoProcess"
      :on-remove="handleRemove"
      :before-upload="beforeUploadVideo"
      :disabled="disabled"
      :on-error="handleError"
    >
      <video
        :src="videoUrl"
        v-if="videoUrl != '' && !videoFlag"
        class="avatar video-avatar"
        controls="controls"
      >您的浏览器不支持视频播放
      </video>
      <i v-else-if="videoUrl == '' && !videoFlag" class="el-icon-plus avatar-uploader-icon"></i>
      <el-progress
        v-if="videoFlag == true"
        type="circle"
        :percentage="videoUploadPercent"
        style="margin-top: 7px"
      ></el-progress>
    </el-upload>
    <div v-if="videoUrl != '' && !videoFlag" style="margin-left:10px">
      <el-button size="small" type="text" class="btn-delete" @click="handleRemove">删除</el-button>
    </div>
  </div>
</template>

js部分

<script>
import config from "../../utils/config.utils";
import uploadFile from "../../utils/uploadMethod";

export default {
  props: {
    videoUrl: {
      type: String,
      default: ""
    },
    videoTitle: {
      type: String,
      default: ""
    },
    disabled: {
      type: Boolean,
      default: false
    },
    itemIndex: {
      type: [String, Number],
      default: -1
    }
  },
  data() {
    return {
      videoFlag: false,
      //是否显示进度条
      videoUploadPercent: 0,
      //进度条的进度,
      isShowUploadVideo: false,
      //显示上传按钮
      videoForm: {
        showVideoPath: "" //回显的变量
      },
      dataObj: {
        prefixUrl: "certification"
      },
      uploadUrl: ``
    };
  },

  mounted() {
  },

  methods: {
    //上传前回调
    beforeUploadVideo(file) {
      this.handleFileSize(file);
    },

    handleFileSize(file) {
      var fileSize = file.size / 1024 / 1024 < 500; //控制大小  修改50的值即可
      let videoType = true; // 文件类型
      let videoSize = true; /// 文件大小

      // [
      //     "video/mp4",
      //     "video/ogg",
      //     "video/flv",
      //     "video/avi",
      //     "video/wmv",
      //     "video/rmvb",
      //     "video/mov"
      //   ].indexOf(file.type) == -1

      if (["video/mp4"].indexOf(file.type) == -1) {
        //控制格式
        videoType = false;
      }
      if (!fileSize) {
        videoSize = false;
      }
      this.isShowUploadVideo = false;

      return [videoType, videoSize];
    },

    //进度条
    uploadVideoProcess(event, file) {
      let arr = this.handleFileSize(event.raw);
      if (!arr[0]) {
        return;
      }
      if (!arr[1]) {
        return;
      }

      if (event.status === "ready") {
        this.videoFlag = true; //进度条显示
        const interval = setInterval(() => {
          if (this.videoUploadPercent >= 100) {
            clearInterval(interval);
            return;
          }
          this.videoUploadPercent += 1; //进度条进度
        }, 80);
      }
    },

    handleError(e) {
      console.log(e, "error");
    },

    //上传成功回调
    handleVideoSuccess(params) {
      let arr = this.handleFileSize(params.file);
      if (!arr[0]) {
        this.$message.error("请上传正确的视频格式");
        return;
      }
      if (!arr[1]) {
        this.$message.error("视频大小不能超过500MB");
        return;
      }

      uploadFile(params).then(res => {
        this.isShowUploadVideo = true;
        this.videoFlag = false;
        this.videoUploadPercent = 100;
        if (res.code === 200) {
          this.emitInput(res.data)
        }
      });
    },
    emitInput(val) {
      this.videoUploadPercent = 0;
      this.$emit("upload-res", val, this.itemIndex);
    },
    handleRemove() {
      this.$emit("delete-video");
    }
  }
};
</script>

样式部分

<style lang="scss" scoped>
.avatar-uploader-icon {
  border: 1px dashed #d9d9d9 !important;
}

.avatar-uploader .el-upload {
  border: 1px dashed #d9d9d9 !important;
  border-radius: 6px !important;
  position: relative !important;
  overflow: hidden !important;
}

.avatar-uploader .el-upload:hover {
  border: 1px dashed #d9d9d9 !important;
  border-color: #409eff;
}

.avatar-uploader-icon {
  font-size: 28px;
  color: #8c939d;
  width: 300px;
  height: 178px;
  line-height: 178px;
  text-align: center;
}

.avatar {
  width: 300px;
  height: 178px;
  display: block;
}
</style>

效果部分

在Vue 2中使用Element UI进行视频上传,你可以按照以下步骤进行操作: 1. 首先,在你的Vue项目中安装Element UI组件库。可以通过npm或yarn进行安装: ``` npm install element-ui --save ``` 2. 在项目的入口文件(通常是main.js)中,引入Element UI并注册相应的组件: ```javascript import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 3. 在你需要使用上传视频的组件中,使用`<el-upload>`组件来实现文件上传功能。在组件的模板中添加如下代码: ```html <template> <el-upload action="your-upload-url" // 替换为你的上传接口地址 :on-success="handleSuccess" :before-upload="beforeUpload" :auto-upload="false" :file-list="fileList" accept="video/*" > <el-button slot="trigger" size="small" type="primary">选取视频文件</el-button> <div slot="tip" class="el-upload__tip">只能上传视频文件</div> </el-upload> </template> ``` 4. 在组件的script部分,定义相应的方法: ```javascript <script> export default { data() { return { fileList: [] // 用于存储选择的文件列表 } }, methods: { handleSuccess(response, file, fileList) { // 文件上传成功后的回调函数 console.log('上传成功') }, beforeUpload(file) { // 文件上传之前的钩子函数 // 可以在这里对文件进行一些验证,如文件大小、文件类型等 console.log('文件上传前') this.fileList.push(file) // 将选择的文件添加到fileList中 return false // 返回false表示不自动上传,需要手动触发上传 } } } </script> ``` 其中`handleSuccess`和`beforeUpload`分别是文件上传成功和上传前的回调函数,你可以根据需求进行相应的处理。 以上就是使用Vue 2和Element UI进行视频上传的基本步骤,你可以根据自己的需要进行进一步的扩展和优化。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值