【问题标题】:Can we store files in Chrome Storage, instead of strings我们可以将文件存储在 Chrome 存储中,而不是字符串
【发布时间】:2017-11-05 21:07:50
【问题描述】:

我可以在Chrome storage API 页面中读到,我们可以将字符串值存储在 Chrome 存储中以针对键。有什么方法可以根据 Chrome 存储中的密钥存储文件吗?

【问题讨论】:

  • Chrome 存储遵循与 localStorage API 相同的标准,因此您应该查看已回答的这个问题stackoverflow.com/q/4940586
  • 感谢您的链接。与 Chrome 存储相比,LocalStorage 的空间有限。将 base64 编码的文件字符串存储在 Chrome 存储中是否是一个好主意。文件数量为数千,总空间量可能超过 5 GB。您提到的上述链接建议使用文件 API,如果我上面的建议不是一个好主意,我认为这是正确的路径。
  • 文件 API 会快几个数量级,因为它不会将文件转换为字符串。

标签: javascript google-chrome google-chrome-extension google-chrome-app google-chrome-storage


【解决方案1】:

chrome.storage 将数据存储为要存储的值的 JSON 字符串化。所以,是的,如果您将文件转换为可以转换为 JSON 的形式(例如,通过JSON.stringify()),则可以存储文件的内容。如果您尝试存储在 chrome.storage 中的值无法转换为 JSON,则无法存储(例如 DOM 元素)。 chrome.storage 本身并不关心数据代表什么,只关心它可以被 JSON 字符串化。

如果您要问,如您的评论中所述,在chrome.storage 中存储总计超过 5GB 的数千个不同“文件”是否是个好主意,那么答案是:“不!”。

如果您正在寻找替代品,那么Can you use HTML5 local storage to store a file? If not, how? 中提供了一些替代品

【讨论】:

  • 但是在 chrome 存储中,我们可以通过在 chrome 扩展 developer.chrome.com/apps/declare_permissions#unlimitedStorage 的清单中设置属性“unlimitedStorage”来存储无限数据那么为什么您认为在 Chrome 存储中拥有 5 GB 的数据是个坏主意呢?你能解释一下吗?关于在 Chrome 存储中存储文件;我可以将它们存储为 blob 或 bufferdata 格式,而不是 json;因此,我认为从 chrome 存储中取回 blob 并以某种方式再次将 blob 转换为文件应该没问题。如果这不是一个好主意,请告诉我?
  • Chrome 转换为 JSON,句号。您不必自己转换为 JSON,它们只需要 能够 转换为 JSON,因为 Chrome 确实会将它们转换为 JSON。
  • 如果您真的对原因感兴趣,那应该是another question,因为对于 cmets 而言,除了“性能”之外的任何答案都开始变得太长。
猜你喜欢
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 2019-09-14
  • 1970-01-01
  • 2018-08-01
  • 2020-03-11
  • 1970-01-01
相关资源
最近更新 更多