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
var blob = new Blob([typedArray.buffer], {type: 'application/octet-stream'});
我有一个充满二进制数据的类型化数组,它是从 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
var blob = new Blob([typedArray.buffer], {type: 'application/octet-stream'});