2

我正在使用 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' },
4

1 回答 1

2

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

request 模块有一个流,您可以将其用于数据,但它不会以 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}));      
  });
});
于 2012-09-08T20:06:56.137 回答