Поддержка Blob для IndexedDB появилась в Chrome Dev

Разработчики Chrome добавили поддержку Blob в IndexedDB.

Это долгожданная функция Chrome, которая позволяет API IndexedDB хранить и извлекать BLOB-объекты без преобразования их в строку Base64.

IndexedDB предоставляет крупномасштабное постоянное хранилище типа «ключ-значение», доступное в большинстве современных браузеров (Safari, очевидно, будет поддерживаться в iOS8 и Mac OS X 10.10). Проверьте статус его реализации .

Blob — это двоичный объект, похожий на файл, который могут обрабатывать современные движки JavaScript. Файловые объекты наследуются от Blob. Вы также можете получать изображения и файлы в виде Blob через XMLHttpRequest. Проверьте статус его реализации .

Хранение BLOB-объекта в IndexedDB

В IndexedDB невозможно определить доступность BLOB-объектов. По сути, вам нужно попробовать поймать, а затем использовать строку вместо Blob, если она недоступна. Вот пример кода:

// Create an example Blob object
var blob = new Blob(['blob object'], {type: 'text/plain'});

try {
   
var store = db.transaction(['entries'], 'readwrite').objectStore('entries');

   
// Store the object  
   
var req = store.put(blob, 'blob');
    req
.onerror = function(e) {
        console
.log(e);
   
};
    req
.onsuccess = function(event) {
        console
.log('Successfully stored a blob as Blob.');
   
};
} catch (e) {
   
var reader = new FileReader();
    reader
.onload = function(event) {
       
// After exception, you have to start over from getting transaction.
       
var store = db.transaction(['entries'], 'readwrite').objectStore('entries');

       
// Obtain DataURL string
       
var data = event.target.result;
       
var req = store.put(data, 'blob');
        req
.onerror = function(e) {
            console
.log(e);
       
};
        req
.onsuccess = function(event) {
            console
.log('Successfully stored a blob as String.');
       
};
   
};
   
// Convert Blob into DataURL string
    reader
.readAsDataURL(blob);
}

Поддержка BLOB-объектов для IndexedDB уже доступна в Firefox и Internet Explorer. Необходимо изучить поддержку Safari.

Наслаждаться!