Javascript 将UTF-8写入文件并使用FileSaver.js下载

Javascript 将UTF-8写入文件并使用FileSaver.js下载,javascript,encoding,utf-8,Javascript,Encoding,Utf 8,我一直在制作一个分布式文件系统,但今天我停止了编写返回文件的内容供浏览器下载 我的系统发送一个文件数据请求,并获取整个UTF-8编码的二进制内容字符串作为响应。然后我尝试使用来编写和下载此内容 目前它只适用于.txt文件。我怀疑这与编码和Blob对象是如何生成的有关,我认为它只是将UTF-8作为文本写入每个文件,这就是它为什么适用于.txt而不是其他文件的原因。我尝试过将响应转换为ByteArray或使用文件对象,但没有任何效果 下面是执行请求和处理响应的代码: $.ajax({ type:

我一直在制作一个分布式文件系统,但今天我停止了编写返回文件的内容供浏览器下载

我的系统发送一个文件数据请求,并获取整个UTF-8编码的二进制内容字符串作为响应。然后我尝试使用来编写和下载此内容

目前它只适用于.txt文件。我怀疑这与编码和Blob对象是如何生成的有关,我认为它只是将UTF-8作为文本写入每个文件,这就是它为什么适用于.txt而不是其他文件的原因。我尝试过将响应转换为ByteArray或使用文件对象,但没有任何效果

下面是执行请求和处理响应的代码:

$.ajax({
  type: "POST",
  url: "http://localhost:3040/read",
  data: {
    data: data
  },
  xhrFields: {
    withCredentials: true
  },
  success: function(response) {
    var FileSaver = require('file-saver');
    var blob = new Blob([response], {type: "application/octet-stream"});
    FileSaver.saveAs(blob, filename);
  }
});
响应输出的一小部分(在本例中为png图像):


你有没有试着把你的响应类型设为arraybuffer?@WendelNascimento还没有。我只是尝试使用一个简单的XMLHttpRequest并将responseType设置为“blob”(因为AJAX似乎还不支持它),它工作得非常好。非常感谢你!
PNG
\u1a
\u0\u0\u1a
IHDR\u0\u0\u2î\u0\u0\u56Eµ¤Q\u0\u0\u0\u1sRGB\u0®Î\u1cé...