IndexedDB के लिए ब्लॉब सहायता, Chrome Dev पर उपलब्ध है

एजी कितामुरा
आइजी कितामुरा

Chrome Dev को IndexedDB पर Blob का सपोर्ट मिल गया है.

यह Chrome के लिए, लंबे समय से मिलने वाली सुविधा है. इसकी मदद से, IndexedDB API को Blob को किसी Base64 स्ट्रिंग में बदले बिना, स्टोर करने और उसे वापस लाने की अनुमति मिलती है.

IndexedDB बड़े पैमाने पर कुंजी-वैल्यू टाइप परसिस्टेंट स्टोरेज उपलब्ध कराता है, जो ज़्यादातर आधुनिक ब्राउज़र पर उपलब्ध है. हालांकि, Safari साफ़ तौर पर iOS8 और Mac OS X 10.10 पर काम करेगा. इसके लागू होने की स्थिति देखें.

ब्लॉब फ़ाइल की तरह का एक बाइनरी ऑब्जेक्ट है, जिसे आधुनिक JavaScript इंजन हैंडल कर सकते हैं. फ़ाइल ऑब्जेक्ट 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);
}

IndexedDB के लिए ब्लॉब सहायता, Firefox और Internet Explorer पर भी पहले से उपलब्ध है. Safari सहायता की जांच करनी होगी.

आनंद लें!