我正在通过 http 获取一些二进制数据。我的代码如下所示:
var writeStream = fs.createWriteStream(fileName);
request(url, function(err, res) {
res.socket.pipe(writeStream);
});
现在输出文件已创建,但文件大小为 0。不过,url 是正确的,我用 wget 验证了这一点。
提前致谢并致以最诚挚的问候
我正在通过 http 获取一些二进制数据。我的代码如下所示:
var writeStream = fs.createWriteStream(fileName);
request(url, function(err, res) {
res.socket.pipe(writeStream);
});
现在输出文件已创建,但文件大小为 0。不过,url 是正确的,我用 wget 验证了这一点。
提前致谢并致以最诚挚的问候
回调http.request
只提供一个参数,它是对请求响应的引用。尝试
http.request(url, function(res) {
res.pipe(writeStream);
});
还要注意ClientResponse
工具ReadableStream
,所以你应该使用.pipe
而不是.socket.pipe
。
我假设这里request
来自 mikeal 的请求库,而不是http.request
. 在这种情况下,你可以简单地做request(url).pipe(writeStream);
请记住,出于调试目的,您始终可以通过管道传输到process.stdout
.
var readStream = fs.createReadStream(fileName);
request(url, function(err, res) {
readStream.pipe(res);
readStream.on('end', function() {
//res.end({"status":"Completed"});
});
});