Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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
Google chrome extension Google chrome扩展-如何访问和存储本地文件以供以后使用_Google Chrome Extension_Fileapi - Fatal编程技术网

Google chrome extension Google chrome扩展-如何访问和存储本地文件以供以后使用

Google chrome extension Google chrome扩展-如何访问和存储本地文件以供以后使用,google-chrome-extension,fileapi,Google Chrome Extension,Fileapi,我目前正在编写我的第一个google chrome扩展。简而言之,我想在“扩展名”弹出窗口中添加一个文件浏览器,浏览一个图像并将该图像插入当前打开的选项卡中 此外,我还想将所选文件存储在扩展名中,以便以后重用 第一种方法是使用FileAPI加载文件内容,并将文件内容base64存储在localStorage中。不幸的是,由于本地存储的空间限制,在几个映像之后,它就停止工作了 更好的方法是获取所选文件的绝对文件名,并在每次必要时重新读取该文件-不幸的是,我无法获取包含路径的完整文件,只是获取了没有

我目前正在编写我的第一个google chrome扩展。简而言之,我想在“扩展名”弹出窗口中添加一个文件浏览器,浏览一个图像并将该图像插入当前打开的选项卡中

此外,我还想将所选文件存储在扩展名中,以便以后重用

第一种方法是使用FileAPI加载文件内容,并将文件内容base64存储在localStorage中。不幸的是,由于本地存储的空间限制,在几个映像之后,它就停止工作了

更好的方法是获取所选文件的绝对文件名,并在每次必要时重新读取该文件-不幸的是,我无法获取包含路径的完整文件,只是获取了没有路径的文件名

另一种方法可能是WebSQL,但这似乎很复杂——有人能确认我们是否也有配额吗


有人事先做过这样的事吗?我很乐意得到任何帮助。

根据您需要对缓存文件执行的操作,您只需使用FileIO API将二进制文件保存到扩展的沙盒环境中即可。仅仅将文件路径存储到原始文件可能不起作用,因为API只能在其沙箱中读取(除非您自己通过输入选择文件)

如有必要,您可以将“unlimitedStorage”权限(更多信息,请参阅)添加到您的manifest.json,以覆盖存储限制

"permissions": [
  "unlimitedStorage"
],
这将仅适用于文件I/O(临时/持久)和Web SQL(仅临时)。由于采用了同步实现,localStorage最多可包含约2700000个字符(因为它存储为UTF-16),设置此权限不会增加字符数

使用文件API和Chrome13+,您可以请求一定数量的配额(完整示例请参见和)。这已经被引入到Web应用程序中,并且在不设置unlimitedStorage权限的情况下工作。(但是,如果设置了权限,则当前不会要求用户允许存储请求)


在我的实验中,这似乎是持续存储大量数据的唯一方法。

对不起,今天刚刚看到了你的答案。使用“unlimitedStorage”不起作用,因为它只能用于WebSQL或应用程序缓存(用于HTML5的脱机使用)。但是将文件保存到扩展名沙箱可能是个好主意。以前没有…对,对不起。目前,唯一的持久存储似乎是文件IO。我编辑了我的文章,用更多的信息来反映这一点
webkitStorageInfo.requestQuota( 
    webkitStorageInfo.PERSISTENT
    newQuotaInBytes,
    quotaCallback,
    errorCallback);