我正在尝试将文件写入文件系统,并将数据作为http.request的响应发送。当我调用函数文件是在桌面上创建但它只包含文本:[对象对象]。问题是如何从http.request响应中获取实际文件数据以及如何将其写入文件。当我像邮递员一样直接从休息客户端调用api时,文件下载完美,但是当节点发送调用时,它无法正常工作。 这是我的代码:
exports.fileDownload = function(req, res){
//Options are defined here
var request = http.request(options, function (res, err) {
if(err){
//Error handling
}
});
request.on('error', function (e) {
//Error handling
});
request.on('response', function(data){
fs.writeFile("C:/Users/Test/Desktop/file.txt", data, 'binary', function(err){
if(err){
//Error handling
}
else{
console.log("Done");
}
})
})
request.end()
}
这里有什么问题,所以当调用这个函数时,它会创建一个名为file.txt的文件,其中包含[Object object]文本,而不是文件的实际文本。感谢。
答案 0 :(得分:1)
http.request
在回调中返回一个响应对象,包含标题等。您必须将事件处理程序绑定到该响应对象并等待实际数据,如下所示:
exports.fileDownload = function (req, res) {
//Options are defined here
var request = http.request(options, function (resp, err) {
if (err) {
//Error handling
} else {
resp.on('data', function (chunk) {
fs.writeFile("C:/Users/Test/Desktop/file.txt", chunk, function (err) {
if (err) {
//Error handling
} else {
console.log('Done');
}
});
});
}
});
request.end();
}
答案 1 :(得分:0)
或许添加:
resp.on('end',function(){
//做点什么
});
只有在“结束”事件触发后才能获取/发送所有数据。