2015-04-17 125 views
2

好的,我在Chrome扩展中有一个脚本,用于抓取数据,处理数据并将其存储在Chrome's storage中。相当标准的东西。在chrome.storage中存储base64字符串

// 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,但这也不工作/失败,因为它太大(?)。

回答

3

引述docs on storage.local:如通过每个值加上每个键的长度的JSON字符串化测量可以被存储在本地存储,数据的

5,242,880QUOTA_BYTES
的最大量(以字节计)。 如果分机具有unlimitedStorage权限,则此值将被忽略。将导致超过此限制的更新立即失败,并设置为runtime.lastError

重点煤矿。您需要将"unlimitedStorage"添加到清单中的权限。

+0

哇我觉得很蠢。是的,我可以看到[在文档中](https://developer.chrome.com/extensions/storage)谢谢! –

+0

发生在我们身上。 – Xan