当前位置: 首页 > 知识库问答 >
问题:

javascript - 使用post请求获取的视频文件流,js如何转成视频文件并下载?

盖和泰
2024-03-27

使用post请求获取的视频文件流,js如何转成视频文件并下载,试了很多方法都不行
image.png

共有2个答案

顾靖
2024-03-27

使用 responseData: 'blob' 这样可以在 ajax 的回调里面就收到 blob,然后用 URL.createObjectURL 转为 bloburl,放在 a 标签用 download 属性触发下载。

但是这个的缺点就是不支持移动端,且不支持后台下载需要页面一直开着

所以一般我们会直接通过 form target 来触发浏览器的默认下载来下载资源。这种方案的缺点是不能携带 headers。所以这里一般会改成临时授权 url 来解决。

这样就能实现一个安全的,支持移动端的,支持后台下载的下载功能。

姬念
2024-03-27

在JavaScript中,当你通过POST请求获取视频文件流时,你可以使用Blob对象和URL.createObjectURL()方法将文件流转换为视频文件,并使用a标签实现下载。以下是一个简单的示例代码,展示了如何完成这个过程:

// 假设你已经通过POST请求获取了视频文件流,并将其存储在变量response中let response; // 这是一个包含视频文件流的响应对象// 创建一个Blob对象,将视频文件流转换为Bloblet blob = new Blob([response], {type: 'video/mp4'}); // 根据你的视频格式修改MIME类型// 创建一个指向Blob的URLlet url = URL.createObjectURL(blob);// 创建一个a标签用于下载let a = document.createElement('a');a.href = url;a.download = 'video.mp4'; // 设置下载文件的名称a.style.display = 'none'; // 隐藏a标签// 将a标签添加到DOM中document.body.appendChild(a);// 模拟点击a标签以开始下载a.click();// 清理document.body.removeChild(a);URL.revokeObjectURL(url);

这段代码首先创建一个Blob对象,将POST请求获取的视频文件流作为参数传递给它,并指定MIME类型为'video/mp4'(根据你的视频格式进行相应的修改)。然后,它使用URL.createObjectURL()方法创建一个指向Blob的URL。

接下来,代码创建一个隐藏的a标签,并将其href属性设置为Blob的URL。它还设置了download属性,以指定下载文件的名称。然后,将a标签添加到DOM中,并通过模拟点击它来开始下载。

最后,为了清理资源,代码从DOM中移除了a标签,并撤销了之前创建的Blob URL。

请注意,上述代码假设你已经通过POST请求获取了视频文件流,并将其存储在变量response中。你需要根据实际情况调整代码,以便正确获取和处理文件流。此外,还要确保在适当的时机执行此代码,例如在POST请求的回调函数中。

 类似资料:
  • 问题内容: 我正在做一个使用HTML和Javascript的项目,它将与本地文件一起在本地运行。我需要通过输入选择一个文件,获取文件信息,然后决定是否将其添加到列表中并进行复制。如果我决定使用它,则必须将其放在队列中以备后用。否则,我将丢弃并选择另一个文件。 我面临的问题是我无法找到一种仅通过在输入中选择视频持续时间来获得视频持续时间的方法。 我进行了很多搜索,但没有找到任何方法来获取持续时间。在

  • 视频文件下载问题? 为什么在微信电脑端视频能播放还能下载,在手机上就不能下载? 同一个视频。

  • 问题内容: python中是否有一种方法可以获取视频文件或其他可实现此目标的库的尺寸?相当于一个或什么?谢谢。 问题答案: 在我的上一家公司中,我们遇到了类似的问题,但我找不到任何python库来执行此操作。因此,我最终使用了来自python的mediainfo,media info也具有命令行选项,并且很容易解析输出,因此实际上,使用media- info的python模块就足够了。它具有进一步

  • 比如我发送了一个语音请求,请求格式如下 POST /chat/asr/temp HTTP/1.1 Host: 192.168.10.168:8093 Connection: keep-alive Content-Length: 338 Accept: application/json, text/plain, / User-Agent: Mozilla/5.0 (Windows NT 6.1; W

  • 想下载S3签名视频文件…但不是下载它将要播放。。。 使用send_dataS3下载 视频文件=”https://s3-eu-west-1.amazonaws.com/tokboxhub.mangoapps.com/46250362/2e1ad9d5-8240-41d2-82bc-38c34bf92e7e/archive.mp4?X-Amz算法=AWS4-HMAC-SHA256

  • 本文向大家介绍python3将视频流保存为本地视频文件,包括了python3将视频流保存为本地视频文件的使用技巧和注意事项,需要的朋友参考一下 使用python3+opencv3.3.1环境将视频流保存为本地视频文件,具体内容如下 1、利用opencv中的VideoCapture类获取视频流的链接,通过cv2的方法得到该视频流的帧数和每帧大小。 2、使用VideoWriter类进行视频编码 3、通