2016-12-05 4 views
-1

У меня возникла проблема с загрузкой файла. У меня есть форма, которая отправляет данные моему контроллеру в файл маршрутов. Когда данные отправляются, req.file не деинсталлирован. То, что я пытаюсь сделать, - это отправить изображение на мою публикацию/изображения, а затем поместить имя изображения в мои кандидаты.req.file не определен при попытке отправить информацию о форме

здесь моя форма

<div class="page-wrap text-center"> 
<div ng-controller = "candidatesController"> 
    <div class = "row"> 
     <div class=" col-md-6 col-md-offset-3"> 
      <form class = "content-margin" ng-submit="addCandidate()" style="margin-top:30px" enctype = "multipart/form-data"> 
       <h3 class = "formheading"> Add a new Candidate</h3> 

       <div class = "form-group" align = "center"> 
        <input type = "string" class = "form-control" placeholder = "candidate name" ng-model = "formData.name" ng-style = "{'width':150 + 'px'}"></input> 
       </div> 
       <div class = "form-group" align = "center"> 
        <input type = "string" class = "form-control" placeholder = "candidate role" ng-model = "formData.role" ng-style = "{'width':150 + 'px'}"></input> 
       </div> 
       <div class = "form-group" align = "center"> 
        <input type = "string" class = "form-control" placeholder = "candidate email" ng-model = "formData.email" ng-style = "{'width':150 + 'px'}"></input> 
       </div> 
       <input method = "post" type="file" name="userPhoto" nd-model = "file"/> 

       <button type="submit" class="btn btn-primary">Add Candidate</button> 
      </form> 
     </div> 
    </div> 
</div> 
</div> 

и вот мой контроллер

router.addPerson = function(req, res) { 

    console.warn(req.files); 



    var candidate = new CandidateModel(); 

    candidate.name = req.body.name; 
    console.warn(req.body.name); 
    candidate.role = req.body.role; 
    console.warn(req.body.role); 
    candidate.email = req.body.email; 
    console.warn(req.body.email); 
    console.warn(candidateImage); 


    // Save the donation and check for errors 
    candidate.save(function(err) { 
     if (err) 
      res.send(err); 

     res.json({ message: 'Donation Added!', data: candidate }); 
    }); 

} 

Я не имею код загрузки файла сделать еще, как я могу даже получить файл для отправки через. Вот функция в моем контроллере.

$scope.updateCandidate = function(){ 

    $scope.formData.id = candidateId.getID(); 

    $http.post('/candidates/'+ candidateId.getID(), $scope.formData) 
     .success(function(data){ 
      console.log(data); 
      $scope.candidates = data; 
      $location.path('/candidates'); 
     }) 
     .error(function(data){ 
      console.log('Error:' + data); 
     }); 
} 

любая помощь будет большим

+0

Что загрузить файл промежуточного слоя вы используете? Мультер, автобус? Может, что-то обычай? – peteb

+0

Я использую multer – ToljinSaturn

ответ

0

Глядя на ваш угловой код, вы не устанавливая Content-Type в multipart/form-data. По умолчанию $http.post() посылает запросы, используя application/json

return $http({ 
    method: 'POST', 
    url: '/candidates/' + candidateId.getId(), 
    data: $scope.formData, 
    headers: { 
    'Content-Type': 'multipart/formadata' 
    } 
}) 
    .then((data) => { 
    // handle data 
    }) 
    .catch((err) => { 
    // handle error 
    }); 
Смежные вопросы