Bloblar değil, yapın

Eric Bidelman

Tüm BlobBuilder hayranları için uyarı, hoşça kal!

BlobBuilder, JavaScript'te Blob'lar (veya Dosyalar) oluşturmak için kullanışlı bir API'dir. Chrome 8, FF 6 ve IE 10'dan beri kullanımdaydı, ancak Safari'de hiç gönderilmemiş ve muhtemelen hiçbir zaman gönderilmeyecek. Dosya API'sinde yapılan son teknik değişiklikler, Blob için yeni bir oluşturucu içeriyor. Bu, BlobBuilder öğesini alakasız hale getiriyor. Hatta Safari gecelikleri bu özelliği zaten devre dışı bırakmış. Chrome çok yakında konsolda sizi uyarmaya başlayacak.

Karşılaştırma amacıyla aşağıda, kullanımdan kaldırılan BlobBuilder ve yeni Blob kurucusunu kullanan aynı kod verilmiştir. Snippet bir stil sayfası oluşturur ve bunu DOM'ye ekler.

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);

Kullanışlı! Dolayısıyla, artık bir BlobBuilder öğesine eklemek yerine bir dizi veri parçasından Blob öğesi oluşturabiliriz. Veri bölümleri farklı türlerde (DOMString, ArrayBuffer, Blob) ve herhangi bir sırada olabilir. Örneğin:

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

İkinci nesne parametresinin isteğe bağlı olduğunu da unutmayın. Bu değişiklikler hakkında daha fazla bilgi edinmek için Blob'daki MDN dokümanlarına bakın.