2017-03-24 3 views
-1

Ich habe einen Fehler, wenn ich Daten von der Clientseite (angular.js) zur Serverseite (node.js) sende. Ich habe ein Formular erstellt, dass der Benutzer Daten eingeben dann mein Controller die Daten erhalten und es an den Server gesendet, um die Daten in Mungo und S3 (Amazon) zu speichern. Ich muß sagen, dass es funktioniert gut - ich meine ich alle Informationen speichern kann ich brauche und ich es in meiner DB sehen kann, und ich kann das Bild auf s3POST http: // localhost: 3000/Upload 500 (Interner Serverfehler)

sehen, aber ich erhalte eine Fehlermeldung: POST http://localhost:3000/upload 500 (Internal Server Error)

meine hTML-Formular:

<html ng-app="mymed"> 
<head> 
<title>insert</title> 
</head> 
<body ng-controller="tryController"> 
<main> 
<body> 
     <form class="form-group" enctype="multipart/form-data" method="POST" action="http://localhost:3000/upload"> 
      <label for="inputEmail3" class="col-sm-2 control-label">Title:</label> 
      <input class="form-control" type="text" placeholder="Title" ng-model="Title" name="Title" required></input> 
      </div> 
      <div class="col-sm-10"> 
      <br> 
      <input type="file" name="file" accept="image/*" ng-modle="file"></input> 
      </div> 
      </div> 
      <input type="submit" class="btn btn-default" name="send" ng-click="createInsert()"></input> 
     </form> 
..... 
<script src="js/appController.js"></script> 

mein Controller:

mymedical.controller('tryController',['$scope','$http','$cookies', function($scope,$http,$cookies){ 

     $scope.createInsert = function(){  
       var data = {};  
       data.Title = $scope.Title; 
       data.file = $scope.file;  
       $http.post('http://localhost:3000/upload', JSON.stringify(data)).then() //callback 
     } 
}]); 

Sever Seite:

exports.saveDatatry=function(request, response){ 

console.log(request.body); 

var file = request.files.file; 
    var hash = hasher(); 

    var stream = fs.createReadStream(file.path) 
    var mimetype = mime.lookup(file.path); 
    console.log(stream); 
    var req; 

    if (mimetype.localeCompare('image/jpeg') 
     || mimetype.localeCompare('image/pjpeg') 
     || mimetype.localeCompare('image/png') 
     || mimetype.localeCompare('image/gif')) { 

     req = client.putStream(stream, hash+'.png', 
      { 
       'Content-Type': mimetype, 
       'Cache-Control': 'max-age=604800', 
       'x-amz-acl': 'public-read', 
       'Content-Length': file.size 
      }, 
      function(err, result) { 
      var savePerTry = new personal({ 
        Title: request.body.Title, 
        file: req.url 
       }); 
       savePerTry.save(function(error, result) { 
       if (error) { 
        console.error(error); 
       } else { 
        console.log("saved!"); 
        response.redirect('http://localhost:8080/tryinsert.html'); 
       }; 
       }) 
      }); 
     } else { 
      console.log(err); 
     } 

} 

Was muss ich tun? Danke,

+0

haben Sie die Knotenprotokolle? 500 ist ein allgemeiner Fehler –

+3

_ "Was ich tun muss?" _ - vor allem natürlich und natürlich: Überprüfen Sie die Fehlerprotokolle. – CBroe

+0

das sind alle Fehler, die ich bekomme - auf der Knotenseite funktioniert es gut – user193239

Antwort

1

Hier ist Ihr Problem:

 function(err, result) { 
      var savePerTry = new personal({ 
       Title: request.body.Title, 
       file: req.url 
      }); 

Jedes Mal, wenn Sie so etwas wie schreiben:

 function(err, result) { 

dann die nächste Zeile sein sollte:

  if (err) { 
       // ... 
      } 

Wenn Sie don Wenn Sie die Fehler nicht behandeln, werden Sie 500 interne Serverfehler bekommen und Sie werden nicht wissen, was 'Es ist falsch.

Immer Fehler behandeln.

+0

Ich erhalte diesen Fehler TypeError: Kann Eigenschaft "Datei" von undefined nicht lesen – user193239

+0

das Problem gefunden! Vielen Dank! – user193239

Verwandte Themen