Dukungan Blob untuk IndexedDB kini ada di Chrome Dev

Eiji Kitamura
Eiji Kitamura

Chrome Dev mendapatkan dukungan untuk Blob di IndexedDB.

Ini adalah fitur yang telah lama ditunggu-tunggu oleh Chrome, yang memungkinkan IndexedDB API dapat menyimpan dan mengambil Blob tanpa mengonversinya menjadi string Base64.

IndexedDB menyediakan penyimpanan persisten tipe nilai kunci skala besar yang tersedia di sebagian besar browser modern (Safari tampaknya akan mendapatkan dukungan di iOS8 dan Mac OS X 10.10). Lihat status penerapannya.

Blob adalah objek biner mirip file yang dapat ditangani mesin JavaScript modern. Objek file mewarisi dari Blob. Anda juga dapat mengambil gambar dan file sebagai Blob melalui XMLHttpRequest. Lihat status penerapannya.

Menyimpan Blob di IndexedDB

Tidak ada cara untuk mendeteksi ketersediaan Blob di IndexedDB. Pada dasarnya Anda harus mencoba-catch, lalu menggunakan string sebagai ganti Blob jika tidak tersedia. Berikut adalah beberapa kode contoh:

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

Dukungan blob untuk IndexedDB juga sudah tersedia di Firefox dan Internet Explorer. Dukungan Safari perlu diselidiki.

Selamat menikmati!