我正在HTML5中创建一个应用程序,您可以在其中选择视频文件,然后应用程序使用HTML5 video
标记和window.URL.createObjectURL()
进行播放。问题是我想在localStorage中保存有关此视频的数据,并在用户使用我的应用程序时再次播放,但是Mozilla MDN states关于此方法的结果:
浏览器会在卸载文档时自动释放这些文件
那么我可以做我想做的事吗?或者在没有window.URL.createObjectURL()
但没有其他东西的情况下做同样的事情?
答案 0 :(得分:6)
我没有使用createObjectURL()
,但如果我理解正确,它本质上是对文件或内存中对象的临时引用。如果您想保存实际视频,它将没有用,因为下次用户访问应用程序时,该指针将不再引用该视频。
我认为您可以使用data:
网址执行此操作,因为该网址实际上包含文件中的完整数据。 This example演示了如何使用FileReader
生成数据网址。我认为你应该能够做到这一点:
var reader = new FileReader();
reader.onload = function(e) {
var myDataUrl = e.target.result;
// do something with the URL in the DOM,
// then save it to local storage
};
reader.readAsDataURL(file);
更新:如果您想要达到1GB,正如您在评论中所说,FileSystem API可能会为您提供更好的服务。这将要求您获取本地文件,将文件的副本保存到持久文件系统存储,然后使用createObjectURL()
获取文件副本的URL。您仍然遇到磁盘空间问题 - 您只是将1GB的重复文件内容添加到用户的文件系统中 - 但我认为不可能在浏览器沙箱之外保留对文件的持久引用。