【问题标题】:how to trigger video file download in angular如何以角度触发视频文件下载
【发布时间】:2020-07-30 19:47:20
【问题描述】:

我从我的 API 获取视频 URL。在这里,我想使用该 URL 下载该视频。我有一个名为下载的按钮。当我点击该按钮时,视频应该会在我的浏览器中开始下载。

我已经搜索并找到了一些解决方案,例如将下载属性放在标签上

<a href="{{selectedVideo.playbackUrl}}" download>Download</a>

它正在重定向到另一个页面,但它没有开始下载视频。

有人可以帮忙吗?

【问题讨论】:

  • 网址是内部的还是外部的?我的意思是如果 url 来自您的 api 或其他 url?
  • 来自 API.@Çağrı
  • 不使用标签是否可以实现。@Çağrı
  • 然后你可以返回base64字符串下载它
  • 我尝试在本地托管一个 mp4 视频并使用您的代码,下载工作正常。下载仅适用于同源 URL 或 blob: 和 data: 方案。是这个原因吗?或者是浏览器的原因,你用的是哪个浏览器?

标签: javascript angular typescript angular8


【解决方案1】:

使用ngx-filesaver 我们可以实现这一点。 ngx-filesaverfilesaver.js 的角包,使用方便。

在这里找到sample stackblitz demo

要在您的应用程序中使用它,请遵循简单的步骤:

  1. npm install file-saver ngx-filesaver --save
  2. 在 NgModule 中导入 FileSaverModule(可以是 AppModule 或任何其他模块)。
  3. 在模板中使用以下指令下载文件

<button type="button"
        fileSaver
        [method]="'GET'"
        [fileName]="'videoName.mp4'"
        [url]="'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4'"
>Download Video</button>

【讨论】:

  • 安装此插件时出现此错误 TS1086:无法在环境上下文中声明访问器。
  • @sun,这个错误是因为 ngx-filesaver 当前使用 angular 9 版本,你可能使用的是低版本,如果你使用的是低版本,那么安装 ngx-filesaver@8.1.0ngx-filesaver@8.0.0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 2022-06-11
相关资源
最近更新 更多