我一直致力于制作分布式文件系统,并且今天停止尝试编写返回文件的内容供浏览器下载。
我的系统发送文件数据请求,并获取整个UTF-8编码二进制内容的字符串作为响应。然后我尝试使用FileSaver.js来编写和下载此内容。
目前仅适用于.txt文件。我怀疑它与编码和Blob对象的制作方式有关,我认为它只是将UTF-8作为文本写入每个文件,这就是为什么它适用于.txt而不是别的。我已经尝试将响应转换为byteArrays或使用File对象,但没有任何作用。
以下是执行请求并处理响应的代码:
$.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图像):
PNG
\u1a
\u0\u0\u1a
IHDR\u0\u0\u2î\u0\u0\u56Eµ¤Q\u0\u0\u0\u1sRGB\u0®Î\u1cé...