Chrome Dev'de IndexedDB için Blob desteği kullanıma sunuldu

Eiji Kitamura
Eiji Kitamura

Chrome Dev, IndexedDB'de Blob için destek sunmaya başladı.

Chrome için uzun zamandır beklenen bu özellik, IndexedDB API'nin Blob'u Base64 dizesine dönüştürmeden depolayıp alabilmesini sağlıyor.

IndexedDB, modern tarayıcıların çoğunda kullanılabilen büyük ölçekli anahtar/değer türü kalıcı depolama alanı sağlar (Safari muhtemelen iOS8 ve Mac OS X 10.10'da destek sunacaktır). Uygulamanın uygulanma durumunu kontrol edin.

Blob, modern JavaScript motorlarının işleyebileceği dosya benzeri bir ikili nesnedir. Dosya nesneleri, Blob'dan devralır. Resimleri ve dosyaları, XMLHttpRequest aracılığıyla Blob olarak da getirebilirsiniz. Uygulamanın uygulanma durumunu kontrol edin.

IndexedDB'de Blob Depolama

IndexedDB'de Blob kullanılabilirliğini algılamak mümkün değildir. Temelde, yakalamayı denemeniz ve daha sonra, kullanılabilir değilse Blob yerine dize kullanmanız gerekir. Aşağıda bazı örnek kod verilmiştir:

// 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);
}

IndexedDB için Blob desteği, Firefox ve Internet Explorer'da da kullanılabilmektedir. Safari desteğinin araştırılması gerekiyor.

Keyfini çıkarın!