如何解析 NodeJs/ExpressJs 中嵌套在表单数据中的文件的多部分表单?

How to parse Multipart Form in NodeJs/ExpressJs having files nested in form data?

我正在向我的 NodeJs/ExpressJs 应用程序服务器发送一个多部分表单请求,其中多部分表单中的动态文件字段嵌套在一个对象中。例如:

multipartFormData = {
   title: 'Virtual Assistant',
   education: [
      {
         description: 'VA Certification from XYZ University'
      }
   ],
   portfolio: [
      { 
        title: 'Microsoft Power BI',
        certificate: File
      },
      { 
        title: 'Google Certified VA',
        certificate: File
      }
   ]
}

此处投资组合中的证书是一个文件,用户可以向其中添加更多投资组合项目。我如何使用 NodeJs 和 ExpressJs 在服务器上解析这个多部分表单,以便我可以访问投资组合中的证书字段?之后我可以将它保存到服务器并为其添加 URL 而不是数据库中的文件。

我尝试过使用多方依赖关系,但它 returns 文件作为空对象 {} 并且带有投资组合字段的字段作为字符串数组“[object Object]”,这是一个文字字符串。

multer 也不支持以这种方式解析表单。

import express from 'express';
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();

var router = express.Router();

router.post('/',multipartMiddleware,controller.create);


module.exports = router;



try this in route file and add middleware in post method
npm using ('connect-multiparty')
while uploading file,set content type = formType...

具有嵌套对象结构的Multipart Form Data需要特殊处理。经过一些尝试,我能够在两个图书馆的帮助下完成我需要的东西。一个在前端名为 "object-to-formdata",可以安装为 npm i object-to-formdata

当此对象作为请求负载发送到后端时,NodeJs/ExpressJs 服务器可以使用此依赖项 multiparty 对其进行解析,该依赖项可以使用 npm i multiparty 这将单独解析 JSON 数据,并在解析的文件中使用 fieldName 字段单独解析文件,以便您可以在采取必要的操作后确定在哪里挂钩文件。

这帮助我通过单个请求保存了我的多部分表单数据,包括 JSON 数据以及嵌套对象中的文件。