我正在尝试利用node-request模块,但是文档不是那么好。如果我请求有效资源并将其通过管道传输到可写流,则一切正常。但是,如果我向无效对象发出请求,则仍会创建可写流。例如,使用以下代码段:
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等),请不要通过管道传输文件;如果请求有效,则通过管道传输文件。有什么建议?
我写了请求:)
你可能想试试这个
var r = request(url) r.on('response', function (resp) { resp.headers resp.statusCode r.pipe(new WritableStream()) })