我正在编写这段代码,我想下载一个字节数组,它此时正在工作,但下载的文件是用 ascii 编码的。
下载的文件显示 “65,66,67,0,0,0,0,0,0,0”
但我期待“ABC”
如何更改此代码以获取二进制格式的文件?
<!DOCTYPE html>
<html>
<body>
<h1>Writing a binary file</h1>
<script>
var dados = new Int8Array(10);
dados[0]=65;
dados[1]=66;
dados[2]=67;
function download()
{
let element = document.createElement('a');
element.setAttribute('href', 'data:application/octet-stream,' + dados );
element.setAttribute('download', "teste.bin" );
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
download();
</script>
</body>
</html>
我明白发生了什么。您无意中将 Int8Array“dados”转换为文本字符串。哎呀!
这是另一种方法:
<!DOCTYPE html>
<html>
<body>
<h1>Writing a binary file</h1>
<script>
function download(bytes, fname) {
debugger;
let blob = new Blob([bytes], {type:"application/octet-stream"});
let link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fname;
link.click();
}
let dados = new Int8Array(10);
dados[0]=65;
dados[1]=66;
dados[2]=67;
download(dados, "teste.bin");
</script>
</body>
</html>
我也会考虑 terrymorse 关于使用 fetch() 的极好建议。