Javascript - 将类型化数组保存为 blob 并作为二进制数据读回

Javascript - Save typed array as blob and read back in as binary data

我有一个充满二进制数据的类型化数组,它是从 ArrayBuffer 生成的

var myArr = new Uint8Array(myBuffer);

我用

向用户展示这个
var blob = new Blob(myArr, {type: "octet/stream"};
var blobURL = URL.createObjectURL(blob);

并插入一个 link 即

"<a href=" + blobUrl + " download=" + filename "/a>"

稍后,我让用户 select 磁盘中的文件,并使用文件 reader 来处理

var reader = new FileReader();

reader.onload = function () {
console.log(reader.result);
};

reader.readAsArrayBuffer(sourceFile);

问题是,似乎无论我做什么,我都会得到文件内容的 "string"。事实上,当我保存文件时,我可以打开它,而且它显然是人类可读的。 IE。如果我的 Uint8Array 是 {"0" : "51", "1" : "52", "2" : "53" }

我可以在文本编辑器中打开下载的 blob,我只看到“515253”,我认为这不应该发生。

如何为格式正确的文件制作 link 文件下载,以便我可以在 dget 中读回正确的值?

事实证明,问题是我在创建 Blob 时遇到语法错误。

更正后的代码如下所示: var blob = new Blob([myArr], {type: "octet/stream"});

如果我已经传递了 ArrayBuffer 参数,我不太确定为什么。为什么我需要括号符号?似乎多余?

根据 Mozilla

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

var blob = new Blob([typedArray.buffer], {type: 'application/octet-stream'});