在 chrome.storage 中存储 base64 字符串

Store a base64 string in chrome.storage

好的,所以我在 Chrome 扩展中有一个脚本,我正在构建它来获取数据、处理数据并将其存储在 Chrome's storage 中。相当标准的东西。

// a property of the incoming 'data' object is `base64`
// which contains the base64 string we are trying to save
chrome.storage.local.set({'data': data}, function(){
    console.log('Saved settings to localStorage!');
});

问题是我要存储的一段数据对象是图像的 base64。尝试存储此结果会导致 "QUOTA_BYTES" 错误,表明我要存储的内容太大。

我的下一个想法是尝试通过这样的方式将数据分块:

chunkBase64 = function( base64 ){
  var a = base64.match(/.{1,4}/g),
      o = {};
  a.forEach(function(val,i){
    o[''+i] = val;
  });
  return o;
};

..这基本上只是将它分解成块并将这些块存储在一个对象中,然后我尝试将其添加到 chrome.storage。这也失败了。

我也尝试过使用标准 localStorage 来存储 base64,但这也不行 work/fails 因为它太大 (?)。

引用docs on storage.local

5,242,880 QUOTA_BYTES
The maximum amount (in bytes) of data that can be stored in local storage, as measured by the JSON stringification of every value plus every key's length. This value will be ignored if the extension has the unlimitedStorage permission. Updates that would cause this limit to be exceeded fail immediately and set runtime.lastError.

强调我的。您需要在清单中将 "unlimitedStorage" 添加到您的权限中。