Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.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 实施';最近打开的文件';使用HTML5功能的功能_Javascript_Html_Local Storage_Indexeddb_Fileapi - Fatal编程技术网

Javascript 实施';最近打开的文件';使用HTML5功能的功能

Javascript 实施';最近打开的文件';使用HTML5功能的功能,javascript,html,local-storage,indexeddb,fileapi,Javascript,Html,Local Storage,Indexeddb,Fileapi,我正计划在我的webapp中实现“最近打开的文件”功能,并试图决定使用哪种HTML5技术。这里最重要的是,我不能只保存文件路径,然后重新打开它。由于安全原因,读取文件必须由用户操作(从输入中选择文件或拖放文件)启动。因此,唯一的选择是将整个文件保存在缓存中。以下是我的选择: A.本地存储 按如下方式存储JSON对象: { "recent": [ {}, {},..., {} ] } { "filename": "blah", "type" : "

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

A.本地存储

  • 按如下方式存储JSON对象:

    {
        "recent": [
            {}, {},..., {}
        ]
    }
    
    {
        "filename": "blah",
        "type" : "txt",
        "chunks": ['"3bce4931-6c75-41ab-afe0-2ec108a30860"',...]
    }
    
    其中每个
    {}
    都是一个JSON文件描述符,如下所示:

    {
        "recent": [
            {}, {},..., {}
        ]
    }
    
    {
        "filename": "blah",
        "type" : "txt",
        "chunks": ['"3bce4931-6c75-41ab-afe0-2ec108a30860"',...]
    }
    
    其中,每个区块都是本地存储中lzw编码数据区块的密钥。每个区块都是blobfile中的数据,在读取文件时获得

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

  • B.指数db

    我刚开始读HTML5的特性,但显然它有异步API,能够存储整个fileBlob对象。但我不知道尺寸限制。不幸的是,浏览器支持非常有限,API似乎很糟糕

    问题是:


    我找不到任何使用这两种技术的Rcenty打开文件的实现。你有?有什么建议吗,已知的问题吗?

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

    您还可以查看JS MVC框架以优化您的工作


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

    您能提供更多信息吗。你说的是最近打开的文件,这是需要持久化的吗?我的意思是,当你关闭浏览器并重新打开时,你还想得到相同的结果吗?如果没有,就把它记在记忆里吧。如果是的话,我建议你看看indexeddb。localstorage每个域只能存储5mb,仅此而已。Indexeddb基本上具有无限的存储空间(取决于硬盘空间),但大多数浏览器都设置了限制。此外,chrome目前不支持indexeddb中的Blob。也许可以看看文件和目录API。它的行为应该和桌面应用程序一模一样。如果关闭Word或Excel并重新打开它,它仍然会保留最近打开的文件列表,这基本上就是此功能的目的。你能举出任何将整个fileBlob存储到indexeddb中的例子吗?你可以在这里找到更多信息@KristoDegrave-很好,谢谢!