我知道,为了将 BLOB 对象转换为 Javascript 中的可读格式 (URL),我应该使用 createObjectURL() 方法,对吧?
例子 :
var blob = new Blob(["Example"], { type: "text/plain" });
url = window.URL.createObjectURL(blob);
我的问题是:
是否有可能获得原始二进制文件BLOB 的内容?所以,我可以得到类似的东西:
"01000101 01111000 01100001 01101101 01110000 01101100 01100101" // "Example" in binary .
转换blob
to an ArrayBuffer
(参见 2 种方法)。创建一个 ArrayBufferView(在本例中为 Int8array),将其展开到一个数组中,然后使用基数为 2 的 Number.toString() 将视图映射到每个数字的二进制表示形式 -.toString(2)
.
Method 1- 使用Blob.arrayBuffer() https://developer.mozilla.org/en-US/docs/Web/API/Blob/arrayBuffer实例方法来获得一个用以下解决的承诺ArrayBuffer
:
const blobToBinary = async (blob) => {
const buffer = await blob.arrayBuffer();
const view = new Int8Array(buffer);
return [...view].map((n) => n.toString(2)).join(' ');
};
const blob = new Blob(["Example"], { type: "text/plain" });
blobToBinary(blob).then(console.log);
Method 2 - 从 blob 中提取数据 https://developer.mozilla.org/en-US/docs/Web/API/Blob#Example_for_extracting_data_from_a_Blob用一个文件阅读器 https://developer.mozilla.org/en-US/docs/Web/API/FileReader。要获取 ArrayBuffer 使用FileReader.readAsArrayBuffer() https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsArrayBuffer.
const blob = new Blob(["Example"], { type: "text/plain" });
const reader = new FileReader();
reader.addEventListener("loadend", function() {
const view = new Int8Array(reader.result);
const bin = [...view].map((n) => n.toString(2)).join(' ');
console.log(bin);
});
reader.readAsArrayBuffer(blob);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)