下载二进制格式的字节数组

问题描述 投票:0回答:1

我正在编写这段代码,我想下载一个字节数组,它此时正在工作,但下载的文件是用 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>

javascript arrays binary
1个回答
1
投票

我明白发生了什么。您无意中将 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() 的极好建议。

© www.soinside.com 2019 - 2024. All rights reserved.