elementui实现上传视频功能+预览

没有见过的奇葩上传视频功能,话不多说直接上代码

html:

<el-form-item label="图片上传" prop="imgUrl">
          <el-upload
              :action="picUrl"
              :headers="headers"
              :on-preview="handlePictureCardPreview"
              :file-list="imgList"
              :on-success="uploadPictureSuccess"
              :show-file-list="true"
              :on-remove="handleRemove"
              :on-change="uploadPictureChange"
              list-type="picture-card"
              :limit="1"
              class="videoUpload"
              >
              <video v-if="isShow"  width="100%" controls="controls" :src="dialogImageUrl" class="avatar"></video>
              <i v-else class="el-icon-plus"></i>
            </el-upload>
            <el-dialog :visible.sync="dialogVisible" append-to-body>
              <video width="100%" controls="controls" :src="dialogImageUrl"></video>
            </el-dialog>
        </el-form-item>

script:

import { deleteFileByName } from "@/api/ks/backgroundImg";
import { mapGetters } from 'vuex'

export default {
  name: "VideoList",
  computed: {
    ...mapGetters(['token']),
    headers() {
        return {
            "Authorization": this.token
        }
    },
  },
  data() {
    return {
      // 视频上传
      baseImgUrl:'https:....',
      hideUpload:false,
      limitCount:1,
      dialogImageUrl: '',
      dialogVisible: false,
      isShow:false,
      imgList:[],
      picUrl: '....',
   },
    methods: {
    // 视频上传
    handleRemove(file, fileList) {
      this.hideUpload = fileList.length >= this.limitCount;
      
      console.log(file, fileList);
      // 调删除图片接口
      deleteFileByName({fileName:this.form.url}).then(res=>{
        if (res.code == 200) {
          this.form.url = ''
          this.form.time = ''
          this.$message({
            message: res.msg,
            type: 'success'
          });
          this.isShow = false
        }
      })

    },
    handlePictureCardPreview(file) {
      console.log(file,file.url)
      this.dialogImageUrl = file.url;
      this.dialogVisible = true;
    },
    uploadPictureSuccess(res,file){
      var _this = this
            if (file.status == "success") {
              _this.$message({
                message:'上传成功',
                type:'success'
              })
            }
            this.form.url = res.msg
              this.dialogImageUrl = file.url;
              this.isShow = true

    },
    uploadPictureChange(file,fileList){
      console.log(file,fileList)
      let _this = this
      this.hideUpload = fileList.length >= this.limitCount;
      var audioElement = new Audio(file.url),duration;
      audioElement.addEventListener("loadedmetadata", function() {
        _this.form.time = audioElement.duration;
        console.log('时长:'+_this.form.time+'s')
      })
    },
   }
 }

css

<style lang="scss" scoped>
::v-deep .is-success{
  position: relative;
}

::v-deep .videoUpload{
  position: relative;
}
::v-deep .avatar{
  position: absolute;
  width: 148px;
  top: 35px;
  left: 0;
}
::v-deep .el-upload-list--picture-card{
  position: absolute;
  z-index: 999;
  
}
::v-deep .el-upload-list--picture-card .el-upload-list__item{
  background: transparent;
}
::v-deep .el-upload-list__item-thumbnail{
  display: none;
}
</style>

总结

提示:根据图片上传改的视频上传,简单粗暴记录一下。

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
您可以使用 Element UI 的 Upload 组件来实现上传视频功能。以下是一个简单的示例代码: ```html <template> <div> <el-upload class="upload-demo" action="/your-upload-api" :on-success="handleSuccess" :before-upload="beforeUpload" :file-list="fileList" multiple :limit="3" :auto-upload="false" > <el-button size="small" type="primary">点击上传视频</el-button> <div slot="tip" class="el-upload__tip">只能上传mp4格式的视频,且不超过3个</div> </el-upload> </div> </template> <script> export default { data() { return { fileList: [], }; }, methods: { handleSuccess(response, file, fileList) { // 处理上传成功的操作 console.log(response); }, beforeUpload(file) { const isMp4 = file.type === 'video/mp4'; // 判断是否为mp4格式的视频 const isLt10M = file.size / 1024 / 1024 < 10; // 判断视频大小是否小于10MB if (!isMp4) { this.$message.error('上传视频只能是 MP4 格式!'); } if (!isLt10M) { this.$message.error('上传视频大小不能超过 10MB!'); } return isMp4 && isLt10M; }, }, }; </script> ``` 在上述代码中,我们使用了 Element UI 的 Upload 组件,并且配置了一些属性和方法来实现上传视频功能。其中,`action` 属性指定了上传视频的接口地址,`on-success` 方法用于处理上传成功后的回调操作,`before-upload` 方法用于在上传前进行一些验证,比如文件类型和大小的判断。 需要注意的是,上面的代码只是一个简单的示例,您需要根据自己的实际需求进行适当的修改和扩展。同时,您还需要在服务端编写对应的接口来处理视频文件的上传和保存操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值