【问题标题】:Saving a blob using FileSaver.js使用 FileSaver.js 保存 blob
【发布时间】:2019-05-29 17:00:32
【问题描述】:

我使用FileSaver.js 来保存一个包含一些二进制数据的blob。我从 ArrayBuffer 构造 blob,如下所示:

saveAs(new Blob([arr], {type: "application/octet-stream"}), '_test.data');

现在的问题是生成的文件全为零。当我打印 ArrayBuffer 的内容时,字节就可以了,它不是一个“全零”数组。显然,blob 的构造在某些方面一定是错误的。但是根据文档,这应该是这样做的方法。也就是说,它应该能够接受 ArrayBuffer,它应该被打包在另一个数组中(因此是方括号),并且 octet-stream 类型应该代表二进制数据。那我错过了什么?

谢谢

【问题讨论】:

  • 这有什么更新吗?

标签: javascript filesaver.js


【解决方案1】:

我不知道您是如何创建二进制数组的,因为它在这里工作。您可以与以下代码进行比较或提供您的代码以便我们检查

<!DOCTYPE html>
<html>
<title>Web Page Design</title>

<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.min.js">
  </script>
  <script>
    document.write("Hello, Coding Ground!");
    var str = "Hello";
    var bytes = []; // char codes
    for (var i = 0; i < str.length; ++i) {
      var code = str.charCodeAt(i);
      bytes = bytes.concat([code]);

    }
    var blob = new Blob(bytes, {
      type: "application/octet-stream"
    });
    saveAs(blob, "_data.data");
  </script>
</head>

<body>
</body>

</html>

【讨论】:

  • 我说的是 ArrayBuffer,不是 Array。无论如何,我会尝试它是否适用于一个简单的数组来隔离问题。
  • 好的,这似乎是问题所在。当我用 Array 替换 ArrayBuffer 时,它可以工作。我会做更多的测试并以某种方式得出结论。谢谢...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
相关资源
最近更新 更多