我计划在我的 web 应用程序中实现“最近打开的文件”功能,并且我正在尝试决定使用哪些 HTML5 技术。这里最重要的是一个事实,我不能只将文件路径保存到文件然后重新打开它。由于安全原因,读取文件必须由用户操作(从输入中选择文件或拖放文件)启动。所以唯一的选择是将整个文件保存在缓存中。这是我的选择:
A. 本地存储
像这样存储 JSON 对象:
{ "recent": [ {}, {},..., {} ] }
其中每个
{}
都是一个 JSON 文件描述符,如下所示:{ "filename": "blah", "type" : "txt", "chunks": ['"3bce4931-6c75-41ab-afe0-2ec108a30860"',...] }
其中每个块是本地存储中 lzw 编码数据块的键。每个块都是来自 blobfile 的数据,在读取文件时获得。
我知道,localstorage 只能存储字符串,不能存储 JSON,但序列化很容易。这种方法的问题是本地存储和同步 API 的大小有限,这会在从文件中读取大量数据时减慢整个应用程序的速度。
B. 索引数据库
我刚开始阅读有关此 HTML5 功能的信息,但显然它具有异步 API 并且能够存储整个 fileBlob 对象。我不知道尺寸限制。不幸的是,浏览器支持非常有限,API 似乎很糟糕。
问题是:
我找不到使用任何一种技术的 Rcenty Opened Files 的任何实现。你有?任何建议,已知的陷阱?