我通过http获取一些二进制数据。我的代码如下所示:node.js写入http响应流
var writeStream = fs.createWriteStream(fileName);
request(url, function(err, res) {
res.socket.pipe(writeStream);
});
现在输出文件已创建,但文件大小为0. url正确,但我通过wget进行了验证。
预先感谢&问候
我通过http获取一些二进制数据。我的代码如下所示:node.js写入http响应流
var writeStream = fs.createWriteStream(fileName);
request(url, function(err, res) {
res.socket.pipe(writeStream);
});
现在输出文件已创建,但文件大小为0. url正确,但我通过wget进行了验证。
预先感谢&问候
为http.request
回调仅供一个参数,它是对所述请求的response的参考。尝试
http.request(url, function(res) {
res.pipe(writeStream);
});
还要注意的是ClientResponse
实现ReadableStream
,所以你应该使用.pipe
而非.socket.pipe
。
我假设request
来自mikeal的请求库,而不是http.request
的实例。在这种情况下,您可以简单地执行request(url).pipe(writeStream);
请记住,出于调试目的,您可以始终管道到process.stdout
。
var writeStream = fs.createReadStream(fileName);
request(url, function(err, res) {
writeStream.pipe(res);
writeStream.on('end', function() {
//res.end({"status":"Completed"});
});
});
你只能将可读的管道写入可写,而不是像你所建议的那样。 – Salketer 2016-11-23 11:15:00
感谢。超级有用的提示在标准输出 – 2017-07-18 15:31:06