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

Attention, BlobBuilder va disparaître !

BlobBuilder est une API pratique pour créer des objets Blob (ou fichiers) en JavaScript. Il existe depuis Chrome 8, Firefox 6 et IE 10, mais n'a jamais été intégré à Safari et ne le sera probablement jamais. Les modifications récentes apportées aux spécifications de l'API File incluent un nouveau constructeur pour Blob, ce qui rend BlobBuilder essentiellement inutile. En fait, les versions nocturnes de Safari l'ont déjà désactivé, et Chrome commencera très bientôt à vous en avertir dans la console.

À des fins de comparaison, voici le même code utilisant le constructeur BlobBuilder obsolète 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 ! Désormais, au lieu d'ajouter à un 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 deuxième paramètre d'objet est facultatif. Pour en savoir plus sur ces modifications, consultez la documentation MDN sur les objets Blob.