Vue实现媒体文件下载

Vue实现媒体文件下载

音频支持先播放再下载,视频是直接下载

vue

      <el-table-column label="音频" align="center" prop="audioPath" >
        <template slot-scope="scope">
          <el-button v-if="scope.row.audioPath!=null" type="text" @click="handlePlay(scope.row)">音频播放</el-button>
          <el-dialog title="音频播放" :visible.sync="dialogVisible" width="40%" :before-close="stop">
            <template>
              <center>
                <audio
                  :src="src"
                  controls="controls"
                  ref="audio"
                >Your browser does not support the audio element.</audio>
              </center>
            </template>
          </el-dialog>
        </template>
      </el-table-column>

      <el-table-column label="视频" align="center" prop="videoPath" >
          <template slot-scope="scope">
          <el-button v-if="scope.row.videoPath!=null" size="mini"
                     type="text"
                     icon="el-icon-edit" @click="handleVideoPlay(scope.row)"
          >视频下载</el-button>

        </template>

      </el-table-column>

data

      videoSrc: "",
      //音频播放
      src: "",
      dialogVisible: false,
      dialogVideoVisible: false,

methods

    beforeDestroy() {
      if (this.player) {
        this.player.dispose()
      }
    },

    //播放音乐组件
    handlePlay(row) {
      this.src = row.audioPath;
      this.dialogVisible = false;
      this.play();

    },

//播放
play() {
  this.dialogVisible = true;
  this.$refs.audio.play();
},
//音频暂停
stop() {
  this.dialogVisible = false;
  this.$refs.audio.pause();
  this.$refs.audio.currentTime = 0;
},

    //视频下载
    handleVideoPlay(row) {
      var name = "download";
      var url = row.videoPath;
      var suffix = url.substring(url.lastIndexOf("."), url.length);
      //跳过浏览直接下载
      fetch(url)
        .then(res => res.blob())
        .then(blob => {
          const a = document.createElement("a");
          const objectUrl = window.URL.createObjectURL(blob);
          a.download = name;
          a.href = objectUrl;
          a.click();
          window.revokeObjectURL(objectUrl);
        })
    },
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值