el-upload上传视频参考

组件代码

<!-- 上传封面视频的对话框 -->
    <el-dialog
    title="封面视频"
    :visible.sync="addvideoDialog"
    width="30%"
    >
    <el-form ref="videoFormRef" :model="videoForm" label-width="90px">
          <el-form-item label="封面视频">
            <el-upload
                drag
                :action="uploadvideoUrl"
                :on-success="handleVideoSuccess"
                :before-upload="beforeUploadVideo"
                :on-progress="uploadVideoProcess"
                :show-file-list="false"
                :headers="headerObj"
                multiple>
            <i class="el-icon-upload"></i>
            <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
            <div class="el-upload__tip" slot="tip">只能上传mp4文件,且不超过20MB</div>
             <el-progress v-if="videoFlag == true"
            class="progressed" 
            type="circle" 
            :percentage="videoUploadPercent" 
            style="margin-top:30px;"
            ></el-progress>
            <video v-if="videoForm.Video !='' && videoFlag == false"
            width="360"
            heihht="180"
            :src=" videoBaseurl + videoForm.Video" 
            class="avatar" 
            controls="controls">您的浏览器不支持视频播放</video>
            </el-upload>
          </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
        <el-button @click="addvideoDialog = false">取 消</el-button>
        <el-button type="primary" @click="addVideoBtn">确 定</el-button>
    </span>
    </el-dialog>

data中定义:

// 展示视频拼接路径,这里路径是在其他地方定义过要引入进来的方便管理
    videoBaseurl: videoBaseurl,
    // 展示视频表单对象
    showvideoForm: {
        index_video: '',
        teach_video: ''
    },
    // 控制编辑视频对话框的显示隐藏
    addvideoDialog: false,
    videoFlag: false,
    videoForm: {
        index_video: '',
        Video: ''
    },
    // 进度百分比
    videoUploadPercent: 0,

methods中的方法

// 编辑封面视频
    editvideoBtn() {
        this.addvideoDialog = true
    },
    // 1. 文件上传之前的钩子,参数为文件
        beforeUploadVideo(file) {
            console.log(file);
        const isLt10M = file.size / 1024 / 1024  < 10;
        if (['video/mp4'].indexOf(file.type) == -1) {
            this.$message.error('请上传正确的视频格式');
            return false;
        }
        if (!isLt10M) {
            this.$message.error('上传视频大小不能超过10MB哦!');
            return false;
        }
    },
    // 2. 文件上传时的钩子
    uploadVideoProcess(event, file, fileList){
        console.log(event);
        console.log( file);
        console.log( fileList);
        this.videoFlag = true;
        this.videoUploadPercent = Math.floor(event.percent)
    },
    // 3. 上传成功,视频显示是在上传成功后后台返回视频地址,直接显示在页面中的
    handleVideoSuccess(res, file) {       //获取上传图片地址
        this.videoFlag = false;
        this.videoUploadPercent = 0;
        if(res.stat == 1){
            this.videoForm.index_video = res.data.url
            this.videoForm.videoUploadId = res.data.uploadvideoUrl;
            this.videoForm.Video = res.data.url;
        }else{
            this.$message.error('视频上传失败,请重新上传!');
        }
    },
    // 确定编辑视频
    async addVideoBtn() {
        const{data: res} = await editHomeTableData({value: this.videoForm.index_video, name: 'index_video'})
        console.log(res);
        if(res.stat !== 1) return this.$mesage.error('视频编辑失败')
        this.gethomevideo()
        this.addvideoDialog = false
        this.$message.success('视频编辑成功')
    },

进度条和对话框中播放器样式

.avatar {
    position: absolute;
    left: -1px;
    top: -1px;
}
.progressed {
    position: absolute;
    top: 50%;
    transform: translate(-50%, -50%);
}

下边是效果图
在这里插入图片描述
我这里上传过视频之后对话框中会出现视频播放组件大小跟上传组件一样大能播放,但我关闭对话框之后再次点开对话框里边的播放器内容一直没办法重置刷新除非刷新页面,写的不太好还需要改进,大家有好的方法可以分享一下。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值