Ne créez pas de blobs, mais créez-les.

Avis à tous les fans de BlobBuilder : nous allons bientôt s'en aller !

BlobBuilder est une API pratique pour créer des blobs (ou fichiers) en JavaScript. Cet outil existe depuis Chrome 8, FF 6 et IE 10, mais n'a jamais été expédié dans Safari, et ne le sera probablement jamais. Les récentes modifications apportées aux spécifications de l'API File incluent un nouveau constructeur pour Blob, ce qui rend BlobBuilder non pertinent. En fait, les nuits Safari l'ont déjà désactivée, et Chrome vous avertira très bientôt dans la console.

À titre de comparaison, vous trouverez ci-dessous le même code utilisant la version obsolète de BlobBuilder et le nouveau constructeur Blob. L'extrait crée une feuille de style et l'ajoute au DOM.

BlobBuilder() :

window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder ||
                        window.MozBlobBuilder || window.MSBlobBuilder;
window.URL = window.URL || window.webkitURL;

var bb = new BlobBuilder();
bb.append('body { color: red; }');
var blob = bb.getBlob('text/css');

var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = window.URL.createObjectURL(blob);

document.body.appendChild(link);

Blob() :

window.URL = window.URL || window.webkitURL;

var blob = new Blob(['body { color: red; }'], {type: 'text/css'});

var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = window.URL.createObjectURL(blob);
document.body.appendChild(link);

Pratique ! Ainsi, au lieu d'ajouter un élément à une BlobBuilder, nous pouvons simplement créer le Blob à partir d'un tableau de parties de données. Les parties de données peuvent être de différents types (DOMString, ArrayBuffer, Blob) et dans n'importe quel ordre. Exemple :

var blob = new Blob(['1234567890', blob, arrayBuffer]);

Notez également que le second paramètre d'objet est facultatif. Pour en savoir plus sur ces modifications, consultez la documentation MDN sur Blob.