2016-12-05 6 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); 
     }); 
} 

任意のヘルプは、あなたがmultipart/form-dataContent-Typeを設定していない、あなたの角度のコードを見てみると

+0

どのファイルアップロードミドルウェアを使用していますか?マルター、バスボーイ?多分カスタム? – peteb

+0

私はmulterを使用しています – ToljinSaturn

答えて

0

素晴らしいことです。デフォルトでは$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 
    }); 
関連する問題