【问题标题】:how to save a video file on local hard disk from the blob using File Saver in java script?java - 如何使用Java脚本中的文件保护程序将视频文件从blob保存在本地硬盘上?
【发布时间】:2016-03-23 09:02:24
【问题描述】:

我已经编写了从 GoogleCloud 存储下载视频的代码

var btn = document.getElementById("btn");
btn.onclick = function(){ 
    var url = "https://www.googleapis.com/download/storage/v1/b/test/xyzzzzz.mp4";
    var filename = url.substring(url.lastIndexOf("/") + 1).split("?")[0];
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'https://www.googleapis.com/download/storage/v1/b/test/xyzzzzz.mp4', true);
    xhr.responseType = 'blob';
}

如何获取blob对象?然后如何使用 File Saver 保存到本地硬盘?我应该将什么传递给文件保护程序 Saveas() 方法。我浏览了 File API 文档,但无法正常工作。有什么建议吗?

【问题讨论】:

    标签: javascript blob fileapi filesaver.js


    【解决方案1】:

    xhr.response 保存您的回调返回到 Google 存储的值,所以这就是您要传入的值。Filesaver saveas(xhr.response, filename)

    您没有询问跨浏览器兼容性,但您应该知道,并非所有浏览器都支持 blob。您可能想要构建一个 blob 而不是将 blob 设置为响应类型,如下所示:

    xhr.responseType = "arraybuffer"
    blob = new Blob([xhr.response], {type: "video/mp4"});
    

    【讨论】:

    • 谢谢。我尝试了 saveAs(blob,'test.mp4'),但收到此错误 - “未捕获的 ReferenceError:未定义 saveAs”
    • 这可以通过添加 Filsaver.js 来解决,但是当我像这样保存视频文件时 blob = new Blob([xhr.response], {type: "video/mp4"});没有保存任何内容,也没有播放视频。
    • xhr.response 是保存来自您的 http 请求的服务器响应的属性。我不知道返回的数据是什么样的,因为我不在您的应用程序中,但您可以通过在控制台中打印 xhr.response 来查找。您可能需要反序列化返回的数据或从数据中选择一个元素。
    猜你喜欢
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2021-11-14
    • 2011-04-01
    相关资源
    最近更新 更多