我正在尝试使用节点js下载tar文件,文件正在保存但无法打开该文件,我尝试了以下代码
var fs = require("fs");
var fn = "version1.tgz";
var request = require('request');
var downloadUrl = "https://url/api/download?downloadFile="+fn+"&username=mkhun";
request({
url: downloadUrl,
method: 'POST',
}, function (err, resp, body) {
var rmv = body;
console.log(rmv);
fs.writeFile(fn,rmv,function(err,data){
console.log(err);
});
});
但是同样的事情也可以使用javascript ajax
var fn = "version1.tgz";
var xhttp = new XMLHttpRequest();
var downloadUrl = "https://url/api/download?downloadFile="+fn+"&username=mkhun";
console.log(downloadUrl);
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var blob = this.response;
var fileName = fn;
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download=fileName;
link.click();
} else if(this.readyState == 2) {
xhttp.responseType = "blob";
}
};
xhttp.open("POST", downloadUrl , true);
xhttp.send();
我不知道如何用node-red解决此问题
答案 0 :(得分:1)
这是接收请求数据时的编码问题。
您可以使用streams
将请求直接从Buffer pipe
进入文件系统。否则,您可以在encoding: null
选项中使用request
request({
url: downloadUrl,
method: 'POST',
encoding: null
}, ...)