不要构建 blob,而是构造 blob

谨此通知所有 BlobBuilder 粉丝,此工具即将停用!

BlobBuilder 是一个实用的 API,可用于在 JavaScript 中创建 Blob(或文件)。该属性自 Chrome 8、FF 6 和 IE 10 起就已存在,但从未在 Safari 中发布,并且可能永远无法发布。File API 的近期规范变更包括为 Blob 添加了新的构造函数,这在本质上使 BlobBuilder 变得无关紧要。事实上,Safari 的夜间版已停用此功能,Chrome 也将很快在控制台中开始向您发出警告。

下面的代码使用已废弃的 BlobBuilder 和新的 Blob 构造函数,供您进行比较。该代码段会创建一个样式表并将其附加到 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);

太方便了!因此,现在,我们可以直接从数据部分数组创建 Blob,而无需附加到 BlobBuilder。数据部分可以是不同类型(DOMStringArrayBufferBlob),并且可以按任何顺序排列。例如:

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

另请注意,第二个对象形参是可选的。如需详细了解这些变更,请参阅 MDN 文档中的 Blob 部分。