JavaScript 在Blob和ArrayBuffer之间转换

示例

JavaScript有两种在浏览器中表示二进制数据的主要方式。ArrayBuffers / TypedArrays包含可变的(尽管长度仍然固定)二进制数据,您可以直接对其进行操作。Blob包含不可变的二进制数据,这些数据只能通过异步File接口访问。

将a转换Blob为ArrayBuffer(异步)

var blob = new Blob(["\x01\x02\x03\x04"]),
    fileReader = new FileReader(),
    array;

fileReader.onload = function() {
    array = this.result;
    console.log("Array contains", array.byteLength, "bytes.");
};

fileReader.readAsArrayBuffer(blob);

6

转换Blob到ArrayBuffer使用Promise(异步)

var blob = new Blob(["\x01\x02\x03\x04"]);

var arrayPromise = new Promise(function(resolve) {
    var reader = new FileReader();

   reader.onloadend= function() {
        resolve(reader.result);
    };

    reader.readAsArrayBuffer(blob);
});

arrayPromise.then(function(array) {
    console.log("Array contains", array.byteLength, "bytes.");
});

将一个ArrayBuffer或类型数组转换为Blob

var array = new Uint8Array([0x04, 0x06, 0x07, 0x08]);

var blob = new Blob([array]);