Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用java脚本中的文件保护程序将blob中的视频文件保存到本地硬盘上?_Javascript_Blob_Fileapi_Filesaver.js - Fatal编程技术网

Javascript 如何使用java脚本中的文件保护程序将blob中的视频文件保存到本地硬盘上?

Javascript 如何使用java脚本中的文件保护程序将blob中的视频文件保存到本地硬盘上?,javascript,blob,fileapi,filesaver.js,Javascript,Blob,Fileapi,Filesaver.js,我已经编写了从谷歌云存储下载视频的代码 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 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对象?然后,如何使用文件保护程序保存到本地硬盘?我应该向文件保护程序Saveas()方法传递什么。我查阅了文件API文档,但无法使其正常工作。有什么建议吗?

xhr.response
保存您回调到Google Storage时返回的值,因此这就是您要传递的内容
Filesaver另存为(xhr.response,filename)

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

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

非常感谢。我尝试了saveAs(blob,'test.mp4'),但是我收到了这个错误——“uncaughtreferenceerror:saveAs未定义”这是通过添加Filsaver.js来解决的,但是当我像这样保存视频文件blob=newblob([xhr.response],{type:“video/mp4”});不会保存任何内容,也不会播放视频。
xhr.response
是保存来自http请求的服务器响应的属性。我不知道返回的数据是什么样子,因为我不在你的应用程序中,但你可以通过在控制台中打印
xhr.response
来找到。您可能需要反序列化返回的数据或从数据中选择一个元素。