отправить запрос $ http с использованием ввода типа файла и получить req.body и req.file без использования multer nodejs - PullRequest
0 голосов
/ 21 декабря 2018

мой проверенный код:

//jade
 input(type='file', ng-model='filename',file-model='Image', required='')

 // controller.js
 $scope.reupload = () => {
      $scope.user = {
        UserName: 'sam',
        FirstName: 'sameer',
      };
      const fd = new FormData();
      $scope.theData = {};
      fd.append('file', $scope.Image);
      $scope.theData.i = fd;
      $http({
        method: 'POST',
        url: '/api/uploadresume',
        data: $scope.theData,
      })
        .then((data) => {
          console.log(data);
        }).catch((err) => {
          console.log(`error ${err}`);
        });
    };

//server.js
app.post('/api/uploadresume', api.UploadAlumniResume);

//api.js
exports.UploadAlumniResume = (req, res) => {
  console.log('req.body', req.body);
  console.log('req.file', req.file);
};

Я получаю данные файла inito $ scope.Image ,

и добавляю данные с помощью const fd = new FormData () .

fd as, добавьте $ scope.Image .

, затем сохраните $ scope.theData данные к почтовому запросу.

я получаю результат:

// req.body $ req.file приставки

 req.body { i: {} }

 req.file undefined

Мне нужен доступ к требованию.body data и read и fs записывают данные req.file.

пожалуйста, дайте мне какое-нибудь решение!

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

когда вы загружаете изображение или файл, вам нужно передать заголовок 'Content-Type': 'multipart/form-data'

, если вы используете bodyparser, то анализатор тела не может обработать form-data, он только обрабатывает application/x-www-form-urlencoded и application/json данные

при получении req.file undefined это потому, что bodyparser не работает с данными формы

, поэтому используйте multer для обработки form-data.

0 голосов
/ 21 декабря 2018

Вы не можете поместить FormData в объект, который вы публикуете.Это должны быть сами данные.

  const fd = new FormData();
  fd.append('file', $scope.Image);
  $http({
    method: 'POST',
    url: '/api/uploadresume',
    data: fd,
    processData: false
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...