2016-07-20 12 views
0

Found eine nette Möglichkeit zum Hochladen von Dateien von eckigen auf meinen Node Server von multer verarbeitet werden. Das Hoch- und Herunterladen von Bildern funktioniert einwandfrei, aber ich möchte ein Schlüssel/Wert-Paar an diese Anfrage anhängen. Leider weiß ich nicht, wie man ein Schlüsselwertpaar zusammen mit diesem Formularpost an diese Anfrage anhängt!

var files = document.getElementById("change-pic-input").files; 
var fd = new FormData(); 
       fd.append("file", files[0]) 
       uploadProfilePic(fd); 

      }); 

      var uploadProfilePic = function(fd) { 
       $http.post("/api/spot/pic/post", fd,{ 
        headers: {'Content-Type': undefined}, 
        transformRequest: angular.identity 
       }).then(
         function successCallback(response) { 
         console.log("Success post image") 
         }, function errorCallback(response) { 
          console.log("fail post image") 
         }); 

      }; 

Würde gerne von einem $ http Experten oder jemand klüger als ich zu hören, um dies zu beheben.

Antwort

0

Ich denke, Sie können andere Daten in Ihre formData-Variable anhängen. Wie folgt;

fd.append('key', value); 

Oder wenn Sie eine JSON-Daten mit dieser Anfrage senden möchten.

fd.append('jsonData', { key: value }); 

Für Rückseiten;

Soweit ich weiß, verwenden Sie req.files für das Erreichen Ihrer hochgeladenen Dateien. Nun, ich denke, Sie können req.body verwenden, um Ihre anderen Daten innerhalb der Anfrage zu erreichen. Mögen; req.body.jsonData oder req.body.key. wenn möglich

+1

@ user2355058 Ich habe meine Antwort aktualisiert. –

+0

Danke, dass du Ali geholfen hast. Leider sind req.body und req.files leer. Ich möchte nur eine Nummer zusammen mit der Bilddatei senden. Vielleicht liegt die Komplexität beim Content-Type –

+1

Verwenden Sie Body-Parser zum Analysieren von Body-Requests? https://github.com/expressjs/body-parser Wenn es nicht existiert, können Sie die Körpereigenschaft von req nicht sehen. –

0

Die einfachste Lösung, die ich gefunden ist Parameter an die URL wie

"/api/spot/pic/post?key=value" 

und dann auf der Serverseite würde

value = req.query.key 

ich eine bessere Lösung zu schätzen wissen anhängen. Vielen Dank.