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

Eric Bidelman

Avertissement à tous les fans de BlobBuilder : à bientôt !

BlobBuilder est une API pratique permettant de créer des objets Blob (ou fichiers) en JavaScript. Il existe depuis Chrome 8, FF 6 et IE 10, mais il n'a jamais été expédié dans 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 non pertinent. En fait, les créatures de Safari l'ont déjà désactivée, et Chrome vous avertira très prochainement dans la console.

À des fins de comparaison, vous trouverez ci-dessous le même code utilisant le BlobBuilder obsolète et le nouveau constructeur Blob. L'extrait de code 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 l'élément à un élément 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 duMDN sur les objets Blob.