获取 BLOB 的二进制内容

Cry*_*ird 6 javascript binary blob

我知道,为了在 Javascript 中将 BLOB 对象转换为可读格式 (URL),我应该使用 createObjectURL() 方法,对吗?

例子 :

var blob = new Blob(["Example"], { type: "text/plain" });
url = window.URL.createObjectURL(blob);
Run Code Online (Sandbox Code Playgroud)

我的问题是:

是否可以获取BLOB的原始二进制内容?所以,我可以得到类似的东西:

"01000101 01111000 01100001 01101101 01110000 01101100 01100101" // "Example" in binary .
Run Code Online (Sandbox Code Playgroud)

Ori*_*ori 6

您可以使用FileReader从 blob 中提取数据。要获取数字的 ArrayBuffer,请使用.FileReader.readAsArrayBuffer()

要将数组缓冲区转换为 0 和 1 的字符串,请创建一个ArrayBufferViewInt8array在本例中),其展开为数组,然后使用基数为 2 -将视图映射到每个数字的二进制表示:Number.toString().toString(2)

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);
Run Code Online (Sandbox Code Playgroud)


Mát*_*nka 5

您可以使用 FileReader 以字节数组形式获取 BLOB 的内容:

var reader = new FileReader();
reader.readAsArrayBuffer(blob);
reader.onloadend = (event) => {
    // The contents of the BLOB are in reader.result:
    console.log(reader.result);
}
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/API/FileReader

https://developer.mozilla.org/en-US/docs/Web/API/Blob#Example_for_extracting_data_from_a_Blob