отправка файла через fetch с formData на Nodejs сервер возвращает req.files null - PullRequest
0 голосов
/ 25 февраля 2020

Я всегда отправлял файлы вместе с данными формы, имея атрибут action и составные энктипы для моих форм html. Недавно мне нужно было использовать fetch для отправки формы и использовать new FormData() для чтения всех моих полей и файлов данной формы html. Но на nodejs конце req.files возвращает null. Когда я использую атрибут формы action, он отлично работает.

Конец клиента

let formData = new FormData(document.getElementById('additem'));
let response = await fetch(`${window.location.href}/inventory`, {
            method: "POST",
            body: formData
        });

На сервере я просто использую express-bodyparser (что по умолчанию сейчас) и пытаюсь получить доступ к файлам с помощью req.files; Я знаю, что могу использовать multer или formidable, но мне было интересно, есть ли способ заставить его работать с тем, что у меня есть. Спасибо.

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

На стороне сервера я просто использую express -bodyparser (который сейчас используется по умолчанию) и пытаюсь получить доступ к файлам с помощью req.files; Я знаю, что могу использовать multer или грозный, но мне было интересно, есть ли способ заставить его работать с тем, что у меня есть.

Нет, нет. FormData объекты генерируют составные тела.

См. документацию для анализатора тела

Это не обрабатывает составные тела из-за их сложной и обычно большой природы , Для многочастных кузовов вас могут заинтересовать следующие модули:

  • busboy и connect-busboy
  • multiparty и connect-multiparty
  • грозный
  • multer
0 голосов
/ 25 февраля 2020

где ваши Content-Type, если вы собираетесь отправлять нужный вам файл на указанные в них заголовки, по умолчанию тип контента это application / json

. В Mozilla есть хороший пример. Документы: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

...