如何通过Node.js将表单数据从客户端重新路由到某些微服务?

时间:2018-12-13 07:14:20

标签: node.js file express multipartform-data

我已经在Node.js上创建了一个中间后端,可以与我的应用程序所依赖的多个微服务进行对话。到目前为止一切都很好。我无法解决的问题是文件处理。我的客户端以Formdata的形式将文件发送到Node层,我想将相同的表单数据重新路由到某些特定的微服务,该微服务也希望该文件也以Form数据的形式存在。我正在使用express-fileupload中间件从req对象提取文件,但它为我提供了具有以下属性的文件数据:

req.files.file = {
  data:Buffer(47643) [37, 80, 68, …]
  encoding:"7bit"
  md5:() => …
  mimetype: "application/pdf"
  mv: function (filePath, callback) { … }
  name:"somefile.pdf"
  truncated:false
}

如何创建客户端发送给该对象的表单数据?

1 个答案:

答案 0 :(得分:-1)

如果我的理解正确,那么您希望在客户端向您的微服务发送请求并将服务器收到请求后,将此文件对象发送到特定的api。您的文件数据可通过所有快速中间件中的req对象进行访问。

借助next表达方法,您可以轻松地在中间件之间进行路由或进行下一步路由。

app.post('/upload', function(req, res, next) {
  console.log(req.files.foo); // the uploaded file object
  if (/*go to next middleware*/)
     next();
  else if (/*go to next route*/)
     next('route');
}, function (req, res) {
  // [next middleware]
  // req.files.foo is accessible
});

// specific api should stand exactly after receiver api
app.post('/anyRoute', function(req, res) {
  // [next route]
  console.log(req.files.foo); // object file is already accessible
});

如果要从服务器发出请求,可以使用axios模块。