在chrome.storage中存储base64字符串

时间:2015-04-17 13:40:08

标签: javascript google-chrome-extension base64 local-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,但这也不起作用/失败,因为它太大(?)。

1 个答案:

答案 0 :(得分:3)

引用docs on storage.local

  

5,242,880 QUOTA_BYTES
  可以存储在本地存储中的最大数据量(以字节为单位),通过每个值的JSON字符串加上每个键的长度来衡量。 如果扩展程序具有unlimitedStorage权限,则会忽略此值。会导致超出此限制的更新立即失败并设置runtime.lastError

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