Blob-ondersteuning voor IndexedDB is geland op Chrome Dev

Chrome Dev heeft ondersteuning voor Blob op IndexedDB geland.

Dit is een langverwachte functie voor Chrome waarmee de IndexedDB API een Blob kan opslaan en ophalen zonder deze naar een Base64-tekenreeks te converteren.

IndexedDB biedt grootschalige persistente opslag van het type sleutelwaarde die beschikbaar is in de meeste moderne browsers (Safari zal blijkbaar ondersteuning krijgen in iOS8 en Mac OS X 10.10). Bekijk de implementatiestatus ervan .

Blob is een bestandsachtig binair object dat moderne JavaScript-engines aankunnen. Bestandsobjecten nemen over van Blob. U kunt afbeeldingen en bestanden ook als Blob ophalen via XMLHttpRequest. Bekijk de implementatiestatus ervan .

Een BLOB opslaan op IndexedDB

Er is geen manier om de Blob-beschikbaarheid in IndexedDB te detecteren. Je moet in principe proberen te vangen en vervolgens string gebruiken in plaats van Blob als deze niet beschikbaar is. Hier is wat voorbeeldcode:

// 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-ondersteuning voor IndexedDB is ook al beschikbaar in Firefox en Internet Explorer. Safari-ondersteuning moet worden onderzocht.

Genieten!