我通过http获取一些二进制数据。我的代码如下:
var writeStream = fs.createWriteStream(fileName);
request(url, function(err, res) {
res.socket.pipe(writeStream);
});
现在输出文件已创建但文件大小为0.但是网址是正确的,我用wget验证了。
提前致谢&最好的问候
答案 0 :(得分:21)
http.request
的回调仅提供一个参数,该参数是对请求的response的引用。尝试
http.request(url, function(res) {
res.pipe(writeStream);
});
另请注意ClientResponse
实施ReadableStream
,因此您应使用.pipe
而不是.socket.pipe
。
答案 1 :(得分:6)
我假设request
来自mikeal的请求库,而不是http.request
的实例。在这种情况下,您只需执行request(url).pipe(writeStream);
请记住,出于调试目的,您始终可以管道process.stdout
。
答案 2 :(得分:3)
var readStream = fs.createReadStream(fileName);
request(url, function(err, res) {
readStream.pipe(res);
readStream.on('end', function() {
//res.end({"status":"Completed"});
});
});