Non creare blob, costruiscili

Eric Bidelman

Avviso a tutti i fan di BlobBuilder: ciao ciao!

BlobBuilder è una pratica API per la creazione di BLOB (o file) in JavaScript. È in circolazione da Chrome 8, FF 6 e IE 10, ma non è mai stato spedito in Safari e probabilmente non lo farà mai. Le recenti modifiche alle specifiche dell'API File includono un nuovo costruttore per Blob, che sostanzialmente rende BlobBuilder non pertinente. In effetti, i nottambuli di Safari l'hanno già disattivato e Chrome inizierà ad avvisarti nella console molto presto.

Per un confronto, di seguito è riportato lo stesso codice che utilizza il BlobBuilder deprecato e il nuovo costruttore Blob. Lo snippet crea un foglio di stile e lo aggiunge al 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);

Utile! Quindi ora, invece di aggiungere un elemento BlobBuilder, possiamo semplicemente creare Blob da un array di parti di dati. Le parti di dati possono essere di tipi diversi (DOMString, ArrayBuffer, Blob) e in qualsiasi ordine. Ad esempio:

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

Inoltre, tieni presente che il secondo parametro oggetto è facoltativo. Per saperne di più su queste modifiche, consulta la documentazione MDN su Blob.