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
来找到。您可能需要反序列化返回的数据或从数据中选择一个元素。