【发布时间】:2011-11-05 14:00:16
【问题描述】:
我正在尝试利用node-request module,但文档不是那么好。如果我向有效资源发出请求并将其通过管道传输到可写流,则一切正常。但是,如果我向无效对象发出请求,仍会创建可写流。例如,取下面的sn-p:
var x = request("http://localhost:3000/foo.jpg");
var st = fs.createWriteStream("foo.jpg");
x.pipe(st);
如果服务器上存在 foo.jpg 资源,则将数据通过管道传输到流中,并在服务器上正常创建文件。但是,如果服务器上 不存在 foo.jpg,则仍会创建一个空白容器文件。似乎没有错误事件或任何可用于确定请求是否返回 404 的事件。我尝试过类似以下的操作:
var x = request("http://localhost:3000/foo.jpg", function(err, response, body) {
if(response.statusCode === 200) {
// Success
var st = fs.createWriteStream("foo.jpg");
x.pipe(st);
}
});
还有:
request("http://localhost:3000/foo.jpg", function(err, response, body) {
if(response.statusCode === 200) {
// Success
var x = response.request;
var st = fs.createWriteStream("foo.jpg");
x.pipe(st);
}
});
无济于事。这个想法很简单。我只想将由 URL 标识的文件复制到本地服务器。如果请求无效(404 等),请不要通过管道传输文件;如果请求有效,则通过管道传输文件。有什么建议吗?
【问题讨论】:
-
等等,我不确定你想在这里完成什么。您要复制什么内容以及何时复制?
-
看在上帝的份上,请使用
request而不是节点请求。
标签: node.js