首页 > 解决方案 > Uint8Array 以文本模式保存而不是二进制

问题描述

我有 Uint8Array ,其值为97、和。当我做9899100

var blob = new Blob(new Uint8Array([97,98,99,100]), {type: "application/octet-stream" });
const a = document.createElement("a");
a.href = URL.createObjectURL(blob);
a.setAttribute("download", "binaryData.random");
document.body.appendChild(a);
a.click();

它开始下载文件,但是当我打开它时,它包含979899100而不是abcd. 我做错了什么?

标签: javascriptblob

解决方案


构造Blob函数采用字节序列对象数组,而不是单个对象。它目前将您的每个元素解释Uint8Array为一个字符串。

const bytes = new Uint8Array([97,98,99,100]);
const blob = new Blob([bytes], {type: "application/octet-stream" });
//                    ^     ^

推荐阅读