【问题标题】:Strange byte when download to file JavaScript下载到文件 JavaScript 时出现奇怪的字节
【发布时间】:2018-11-27 17:12:06
【问题描述】:

我正在尝试使用以下函数将字符串下载到文件中:

function handleDownload(){
  var settings = "";
  for (var i in archivo){
    settings += String.fromCharCode(parseInt(archivo[i], 16));
  }
  var blob=new Blob([settings], {type: "application/octet-stream"});
  var link=document.createElement('a');
  link.href=window.URL.createObjectURL(blob);
  link.download="config.bin";
  link.click();
}

它工作正常,但有时它会在中间添加值“0xC2”。

例如,使用以下字节数组作为输入
00 a0 42 00
文件返回
00 c2 a0 42 00

我该如何解决这个问题?我检查了整个文件,它在大于 127 的字节之前总是一个 0xC2。

谢谢!

【问题讨论】:

  • (archivo[i]<16 ? "0" : "" ) + String.fromCharCode(parseInt(archivo[i], 16))
  • 什么?正确加载的“设置”字符串。我在控制台中打印出来检查,没有 0xC2 字符。问题出在下载部分。正如我所说,当它大于127的字节时,它之前添加了一个0xC2。

标签: javascript file download hex byte


【解决方案1】:

解决了!我创建了一个无符号数组(Uint8Array)并将其发送到 Blob。

var archivo =   ["7E","7F","80","81",
                 "7E","7F","80","81",
                 "7E","7F","80","81",
                 "7E","7F","80","81"];//126,127,128,129

function d(){
    var bytes = new Uint8Array(archivo.length);

    for (var i in archivo){
        bytes[i] = parseInt(archivo[i], 16);
    }

    var blob = new Blob([bytes], {type: "application/octet-stream"});
    var link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);
    link.download = "config.bin";
    link.click();
}

【讨论】:

    猜你喜欢
    • 2021-10-12
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多