使用Node.js中的Request / Formidableparsing多部分响应

我正在使用mikeal的Request模块从REST服务器获取图像,然后尝试使用强大的方式parsing多部分响应,但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事件,但是因为你正在使用带有callback的request ,所以创build强大的callback将不会运行,直到所有的数据被发射和收集之后。 这就是请求能够将bodyparameter passing给callback的方式。

请求模块有一个可用于数据的stream,但它不会像Formidable所希望的那样公开响应头,所以我不认为有一个简单的方法来使用它。

既然你只是在做一个GET请求,我build议只使用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})); }); });