使用HTML5功能实现“Recenty Opened Files”功能

时间:2013-03-07 10:33:58

标签: javascript html5 local-storage indexeddb fileapi

我打算在我的webapp中实现“Recenty Opened Files”功能,我正在尝试决定使用哪种HTML5技术。这里最重要的是一个事实,我不能只是将文件路径保存到文件然后重新打开它。出于安全原因,必须通过用户操作(从输入中选择文件或拖放文件)来启动读取文件。所以唯一的选择是将整个文件保存在缓存中。以下是我的选择:

:一种。 localStorage的

  1. 像这样存储JSON对象:

    {
        "recent": [
            {}, {},..., {}
        ]
    }
    

    其中每个{}是一个JSON文件描述符,如下所示:

    {
        "filename": "blah",
        "type" : "txt",
        "chunks": ['"3bce4931-6c75-41ab-afe0-2ec108a30860"',...]
    }
    

    其中每个块是localstorage中的密钥,用于lzw编码的数据块。每个块都是来自blobfile的数据,在读取文件时获得。

    我知道,localstorage只能存储字符串,而不能存储JSON,但它很容易序列化。 这个apprach的问题是本地存储和同步API的大小有限,这会在从文件中读取大量数据时降低整个应用程序的速度。

  2. B中。索引资料

    我刚刚开始阅读有关此HTML5功能的内容,但显然它具有异步API并且能够存储整个fileBlob对象。我不知道尺寸限制。不幸的是,浏览器支持非常有限,API看起来很糟糕。

    问题是:

    我无法使用任何一种技术找到任何Rcenty Opened Files的实现。你有没有?任何建议,已知的问题?

1 个答案:

答案 0 :(得分:0)

我认为您的JSON / LocalStorage方法是一个很好的解决方案。 您可以使用它作为临时JS对象轻松处理数据,并在每次修改时覆盖localstorage条目(我对我的移动应用程序使用了很多)。

您还可以查看JS MVC框架以优化您的工作 http://backbonejs.org/docs/backbone-localstorage.html

提示:不要使用webSQL(lite)DB,因为W3C不再支持它了。

相关问题