node.js将http响应写入流

sen*_*dro 19 javascript http stream request node.js

我正在通过http获取一些二进制数据.我的代码看起来像:

var writeStream = fs.createWriteStream(fileName);
request(url, function(err, res) {
    res.socket.pipe(writeStream);
});
Run Code Online (Sandbox Code Playgroud)

现在输出文件已创建但文件大小为0.网址是正确的,但我用wget验证了.

在此先感谢您的问候

bkc*_*rad 23

回调http.request仅提供一个参数,该参数是对请求响应的引用.尝试

http.request(url, function(res) {
    res.pipe(writeStream);
});
Run Code Online (Sandbox Code Playgroud)

还要注意ClientResponse工具ReadableStream,所以你应该使用.pipe而不是.socket.pipe.


ebo*_*man 7

我假设这request是来自mikeal的请求库而不是一个实例http.request.在这种情况下,你可以做到request(url).pipe(writeStream);

请记住,出于调试目的,您始终可以管道process.stdout.

  • 如果使用的是节点核心https库,而不是您提到的库,有什么区别? (2认同)