好的,我在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,但这也不起作用/失败,因为它太大(?)。
答案 0 :(得分:3)
5,242,880
QUOTA_BYTES
可以存储在本地存储中的最大数据量(以字节为单位),通过每个值的JSON字符串加上每个键的长度来衡量。 如果扩展程序具有unlimitedStorage
权限,则会忽略此值。会导致超出此限制的更新立即失败并设置runtime.lastError
。
强调我的。您需要将"unlimitedStorage"
添加到清单中的权限。