2

Итак, у меня есть скрипт в расширении Chrome, который я создаю, который захватывает данные, обрабатывает их и сохраняет в Chrome's storage. Довольно стандартный материал.Сохраните строку base64 в chrome.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!'); 
}); 

Проблема в том, что часть объекта данных, которую я пытаюсь сохранить, является базой64 изображения. Попытка сохранить это приводит к ошибке «QUOTA_BYTES», что указывает на то, что то, что я пытаюсь сохранить, слишком велико.

Моя следующая мысль была попробовать и порций данных прочь, через что-то вроде этого:

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

..which по существу только разбивает его на куски и сохраняет эти кусочки в объект, который я тогда попытка добавить в chrome.storage. Это также терпит неудачу.

Я также пробовал использовать стандарт localStorage только для того, чтобы сохранить base64, но это также не работает/не работает, потому что оно слишком велико (?).

ответ

3

Цитируя docs on storage.local:

5,242,880QUOTA_BYTES
Максимальный объем (в байтах) данных, которые могут храниться в локальном запоминающем устройстве, как измерено с помощью JSON stringification каждого значения плюс длина каждого ключа. Это значение будет проигнорировано, если расширение имеет разрешение unlimitedStorage. Обновления, которые могут привести к превышению этого предела, немедленно прекращаются и устанавливаются runtime.lastError.

Emphasis mine. Вы должны добавить "unlimitedStorage" к своим разрешениям в манифесте.

+0

WOW Я чувствую себя настолько немым. Да, я вижу, что [в документации] (https://developer.chrome.com/extensions/storage) спасибо! –

+0

Происходит к лучшему из нас. – Xan

Смежные вопросы