تم توفير دعم Blob لقاعدة البيانات المفهرسة في إصدار مطوّري البرامج من Chrome

أصبح متاحًا في الإصدار المخصّص للمطوّرين من Chrome استخدام Blob في IndexedDB.

هذه ميزة طال انتظارها في Chrome، وهي تتيح لواجهة برمجة التطبيقات IndexedDB API تخزين ملف Blob واسترداده بدون تحويله إلى سلسلة Base64.

توفّر IndexedDB مساحة تخزين دائمة من نوع "المفتاح/القيمة" على نطاق واسع، وهي متاحة في معظم المتصفّحات الحديثة (يبدو أنّ Safari سيتيح استخدامها في iOS 8 وMac OS X 10.10). اطّلِع على حالة التنفيذ.

Blob هو عنصر ثنائي يشبه الملف يمكن لمحرّكات JavaScript الحديثة التعامل معه. تكتسب عناصر الملف سمات من Blob. يمكنك أيضًا جلب الصور والملفات كـ Blob عبر XMLHttpRequest. اطّلِع على حالة التنفيذ.

تخزين ملف Blob في IndexedDB

لا تتوفّر طريقة لرصد مدى توفّر Blob في 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);
}

يتوفّر دعم Blob لـ IndexedDB على Firefox وInternet Explorer أيضًا. يجب التحقيق في مدى توفّر الدعم لمتصفّح Safari.

نتمنّى لك وقتًا ممتعًا.