Chrome Dev में, IndexedDB पर Blob के इस्तेमाल की सुविधा उपलब्ध है.
Chrome में यह सुविधा काफ़ी समय से उपलब्ध कराने का इंतज़ार किया जा रहा था. इसकी मदद से, IndexedDB API किसी ब्लॉब को Base64 स्ट्रिंग में बदले बिना उसे स्टोर और फिर से पा सकता है.
IndexedDB, बड़े पैमाने पर कुंजी-वैल्यू टाइप का स्टोरेज उपलब्ध कराता है. यह स्टोरेज, ज़्यादातर आधुनिक ब्राउज़र पर उपलब्ध होता है. ऐसा लगता है कि Safari, iOS8 और Mac OS X 10.10 में इसकी सुविधा देगा. लागू करने की स्थिति देखें.
ब्लॉब, फ़ाइल जैसा बाइनरी ऑब्जेक्ट होता है. इसे मॉडर्न JavaScript इंजन हैंडल कर सकते हैं. फ़ाइल ऑब्जेक्ट, Blob से इनहेरिट होते हैं. XMLHttpRequest की मदद से, इमेज और फ़ाइलों को Blob के तौर पर भी फ़ेच किया जा सकता है. लागू करने की स्थिति देखें.
IndexedDB में ब्लॉब सेव करना
IndexedDB में ब्लॉब की उपलब्धता का पता लगाने का कोई तरीका नहीं है. आपको मुख्य रूप से try-catch का इस्तेमाल करना होगा. इसके बाद, अगर 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 के लिए Blob की सुविधा, Firefox और Internet Explorer पर पहले से ही उपलब्ध है. Safari की सहायता टीम की जांच की ज़रूरत है.
आनंद लें!