javascript - 仅当收到 HTTP 200 时如何通过 pipe() npm-request?

标签 javascript node.js npm-request node-streams

我有以下代码:

let request = require('request');
let fs = require('fs');

request.get('http://localhost:8080/report.rtf')
  .pipe(fs.createWriteStream(__dirname + '/savedDoc.rtf'));

它运行良好,但前提是文档从给定的 URL 成功下载。但是,如果出现任何 HTTP: 403、404 或任何其他错误,则会保存一个长度为零的空文件!

我如何.pipe() 只在 HTTP:200 响应的情况下不使用任何额外的 HEAD 请求?应该可以一次搞定!

最佳答案

管道前检查.statusCode:

const req = request
  .get('http://localhost:8080/report.rtf')
  .on('response', function (res) {
    if (res.statusCode === 200) {
      req.pipe(fs.createWriteStream(__dirname + '/savedDoc.rtf'))
    }
  })

关于javascript - 仅当收到 HTTP 200 时如何通过 pipe() npm-request?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49277790/

相关文章:

javascript - 使用 jQuery + FadeOut 更改图像源

javascript - 更改 :hover CSS properties with JavaScript

javascript - 运行 Node 脚本时出错,找不到模块 'mongodb/node_modules/bson'

javascript - 在 Meteor 中上传 POST 提交的图片

javascript - HTML5 全局变量在两个地方不同

mysql - nodejs mysql 模块是否为我们转义?如果没有那么如何 sanitizer ?

javascript - 处理 amazon ec2 实例中的 I/O 请求

node.js - 运行Codebox时查找Node包的问题

Node.js请求返回错误: connect ECONNREFUSED when set options parameter

javascript - 当 http 获得分块响应时陷入无限重定向循环