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

Chrome Dev, IndexedDB'de Blob desteğini kullanıma sundu.

Bu, Chrome için uzun zamandır beklenen bir özelliktir. IndexedDB API'nin bir Blob'u Base64 dize dönüştürmeden depolayıp almasına olanak tanır.

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, iOS8 ve Mac OS X 10.10'da destek sunacak). Uygulama durumuna göz atın.

Blob, modern JavaScript motorlarının işleyebileceği dosya benzeri bir ikili nesnedir. Dosya nesneleri Blob'dan devralınır. Resimleri ve dosyaları XMLHttpRequest aracılığıyla Blob olarak da getirebilirsiniz. Uygulama durumuna göz atın.

IndexedDB'de Blob depolama

IndexedDB'de Blob kullanılabilirliğini algılamanın bir yolu yoktur. Temel olarak, try-catch yapısını kullanmanız ve ardından Blob mevcut değilse bunun yerine dize kullanmanız gerekir. Aşağıda örnek bir 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 mevcuttur. Safari desteğinin incelenmesi gerekiyor.

Keyfini çıkarın!