node.js - 在 Node.js 中使用 Request/Formidable 解析多部分响应

标签 node.js rest formidable

我正在使用 mikeal 的请求模块从 REST 服务器获取图像,然后尝试用强大的方法解析多部分响应,但 form.parse 永远不会被调用。我做错了什么吗?

request.get({url: "http://ur-to-get", headers: headers, qs: query}, function(err, res, body) {
    var form = new formidable.IncomingForm();
    form.parse(res, function(err, fields, files) {
        console.log(util.inspect({fields: fields, files: files}));      
    });
});

标题看起来像:

transfer-encoding': 'chunked',
'content-type': 'multipart/parallel;
boundary=yz2C9C5D87FD6148a3986510BCACF917A82C9C5D87FD6148a3986510BCACF917A8ZY' },

最佳答案

Formidable 的 parse 期望能够监视您传递的 res 参数上的 data 事件,但因为您正在使用 request 带有回调,创建强大的回调将在所有数据发出和收集后才会运行。这就是 request 能够将 body 参数传递给回调的方式。

请求模块有一个可用于数据的流,但它不会以 Formidable 想要的方式公开响应 header ,因此我认为没有简单的方法来使用它。

由于您只是执行 GET 请求,因此我建议仅使用 Node 的默认请求逻辑而不是 request 模块,尽管参数有点复杂.

http.get({
  host:'google.com',
  headers: headers,
  path: '/?' + querystring.stringify(qs)
}, function(res){
  var form = new formidable.IncomingForm();
  form.parse(res, function(err, fields, files) {
    console.log(util.inspect({fields: fields, files: files}));      
  });
});

关于node.js - 在 Node.js 中使用 Request/Formidable 解析多部分响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12333258/

相关文章:

node.js - 2 Node js + express 应用程序共享 https 端口 443?

rest - 通过HTTPS发送密码: GET vs POST

node.js - 从 node.js 报告上传进度

regex - 文件名中包含空格的上传导致我的服务器出现错误

javascript - 上传文件nodejs和Angular强大

node.js - 更新 mongoDB 中嵌套文档中的值

mysql - Sequelize : not able to login via localhost?

java - Spring Boot Data Rest不支持响应式?

java - Jersey 休息客户端不添加查询参数

javascript - webpack < 5 默认情况下用于包含 Node.js 核心模块的 Polyfill。这已不再是这种情况