在 Blob 和 ArrayBuffers 之間轉換
JavaScript 有兩種主要方式來表示瀏覽器中的二進位制資料。ArrayBuffers / TypedArrays 包含可以直接操作的可變(但仍然是固定長度)二進位制資料。Blob 包含不可變的二進位制資料,只能通過非同步 File 介面訪問。
將 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);
Version >= 6
使用 Promise
將 Blob
轉換為 ArrayBuffer
(非同步)
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]);