当前位置:首页 > VUE

vue实现视频下载功能

2026-02-21 08:43:29VUE

Vue 实现视频下载功能的方法

前端直接下载(适用于公开URL)

对于可直接访问的视频文件,可通过创建 <a> 标签触发下载:

vue实现视频下载功能

// 在Vue方法中实现
downloadVideo(url, filename) {
  const link = document.createElement('a');
  link.href = url;
  link.download = filename || 'video.mp4';
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}

处理需要鉴权的视频

当视频需要后端验证时,需通过API请求获取文件流:

vue实现视频下载功能

axios({
  url: '/api/video/download',
  method: 'GET',
  responseType: 'blob'
}).then(response => {
  const blob = new Blob([response.data]);
  const downloadUrl = window.URL.createObjectURL(blob);
  this.downloadVideo(downloadUrl, 'protected_video.mp4');
});

分片下载大文件

对于大文件下载可显示进度条:

axios({
  url: '/api/large-video',
  method: 'GET',
  responseType: 'blob',
  onDownloadProgress: progressEvent => {
    const percent = Math.round(
      (progressEvent.loaded * 100) / progressEvent.total
    );
    this.downloadProgress = percent;
  }
}).then(response => {
  // ...处理blob下载逻辑
});

注意事项

  • 跨域问题需后端配置CORS
  • 移动端浏览器可能限制自动下载
  • 大文件下载建议添加进度反馈
  • 敏感文件应进行权限验证

完整组件示例

<template>
  <button @click="handleDownload">
    下载视频 {{ downloadProgress }}%
  </button>
</template>

<script>
export default {
  data() {
    return {
      downloadProgress: 0
    };
  },
  methods: {
    async handleDownload() {
      try {
        const response = await axios({
          url: '/api/video',
          method: 'GET',
          responseType: 'blob',
          onDownloadProgress: progressEvent => {
            this.downloadProgress = Math.round(
              (progressEvent.loaded * 100) / progressEvent.total
            );
          }
        });

        const blob = new Blob([response.data]);
        const url = window.URL.createObjectURL(blob);
        const link = document.createElement('a');
        link.href = url;
        link.download = 'video.mp4';
        link.click();
        window.URL.revokeObjectURL(url);
      } catch (error) {
        console.error('下载失败:', error);
      }
    }
  }
};
</script>

以上方法涵盖了从简单到复杂的视频下载场景,可根据实际需求选择适合的方案。

分享给朋友:

相关文章

h5能实现的功能

h5能实现的功能

H5能实现的功能 H5(HTML5)是一种现代的网页技术标准,具备丰富的功能和特性,适用于多种场景。以下是H5能够实现的主要功能: 多媒体支持 H5原生支持音频和视频播放,无需依赖Flash等插件。…

vue 实现 功能

vue 实现 功能

Vue.js 是一个流行的前端框架,用于构建用户界面和单页应用程序。以下是一些常见的 Vue 功能实现方法: 数据绑定 Vue 的核心特性之一是数据绑定,可以通过 v-model 指令实现双向数据绑…

php实现分页功能

php实现分页功能

PHP实现分页功能的方法 数据库查询与分页逻辑 使用SQL的LIMIT和OFFSET实现分页。假设每页显示10条数据,当前页码为$page: $perPage = 10; $page = isset…

h5实现点击复制功能

h5实现点击复制功能

使用document.execCommand方法(兼容旧浏览器) 通过document.execCommand('copy')实现复制功能,需先选中文本内容。创建一个隐藏的textarea或input…

vue实现按钮实现点击功能

vue实现按钮实现点击功能

实现按钮点击功能 在Vue中实现按钮点击功能可以通过v-on指令或@缩写来绑定事件。以下是几种常见的实现方式: 使用v-on指令 通过v-on:click绑定点击事件,触发定义在methods中的方…

vue实现app功能

vue实现app功能

Vue 实现 App 功能的常见方法 使用 Capacitor 或 Cordova 进行混合开发 Vue 结合 Capacitor 或 Cordova 可以将 Web 应用打包成原生 App。Capa…