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

时间:2012-09-08 18:11:18

标签: node.js rest formidable

我正在使用mikeal的Request模块从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' },

1 个答案:

答案 0 :(得分:2)

Formidable的parse期望能够监控您已经通过的data参数上的res个事件,但由于您使用request进行回调,您的回调在发出和收集所有数据之后,创建强大的东西才会运行。这就是请求如何将body参数传递给回调。

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

由于您只是在执行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}));      
  });
});