Как разобрать Multipart Form в NodeJs / ExpressJs, имеющих файлы, вложенные в данные формы? - PullRequest
0 голосов
/ 24 октября 2019

Я отправляю запрос многочастной формы на мой сервер приложений 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
      }
   ]
}

Здесь сертификация в портфолио - это файл, и пользователь может добавить в него больше элементов портфолио. Как я могу проанализировать эту форму Multipart на сервере, используя NodeJ и ExpressJ, чтобы я мог получить доступ к полю сертификата в портфеле? После чего я могу сохранить его на сервере и добавить URL-адрес для него вместо файла в базе данных.

Я попытался использовать многопартийную зависимость, но он возвращает файлы как пустой объект {} и поля с полем портфолио. как массив строк "[object Object]", который является литеральной строкой.

Кроме того, multer не поддерживает синтаксический анализ форм таким образом.

Ответы [ 2 ]

0 голосов
/ 27 октября 2019

Multipart Form Данные со структурой вложенных объектов должны обрабатываться специально. После нескольких попыток я смог выполнить то, что мне было нужно, с помощью двух библиотек. Один во внешнем интерфейсе с именем «object-to-formdata», который можно установить как npm i object-to-formdata

Когда этот объект отправляется в бэкэнд в качестве полезной нагрузки запроса, он можетанализируется сервером NodeJs / ExpressJs с использованием этой зависимости multiparty , которую можно установить с помощью npm i multiparty , при этом данные JSON будут анализироваться отдельно, а файлы - отдельно с полем fieldName в проанализированных файлах, так чточто вы можете определить, где перехватить файл после того, как будут предприняты необходимые действия.

Это помогло мне сохранить данные из нескольких составных форм одним запросом, включая данные JSON, а также файлы во вложенных объектах.

0 голосов
/ 24 октября 2019
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...
...