如何使用node.js(express.js)将带有上传文件的post multi / form-data表单重新发送到不同的服务器?

时间:2012-02-17 11:17:23

标签: node.js express

我将带有文件(enctype =“multipart / form-data”)的表单发布到node.js(express.js框架),并且只想发送这个相同的发布请求,就像它只是发送到不同的服务器一样。 node.js中最好的方法是什么?

3 个答案:

答案 0 :(得分:9)

删除express.bodyParser并尝试这样的管道:

req.pipe(request('http://host/url/')).pipe(res)

答案 1 :(得分:6)

您可以使用Mikeal的Node.js请求(https://github.com/mikeal/request)进行尝试。它会是这样的:

app.post('/postproxy', function(req, res, body){
    req.pipe(request.post('http://www.otherserver.com/posthandler',body)).pipe(res);
});

答案 2 :(得分:0)

由于 https://github.com/mikeal/request 已弃用,以下是使用节点中的 http 模块的解决方案:

app.post('/proxy', (request, response, next) => {
  const options = {
    host: 'destination_host',
    port: 'destination_port',
    method: 'post',
    path: '/destination_path',
    headers: request.headers
  };
  request.pipe(http.request(options, (destinationResponse) => {
    destinationResponse.pipe(response);
  }))
    .on('error', (err) => {
      // error handling here
    })
}

为了代理来自 multipart/form-data 的文件,我不得不使用原始请求标头。