2016-07-20 15 views
0

multerで処理するために、ノードサーバーからノードサーバーにファイルをアップロードする良い方法が見つかりました。画像のアップロードと処理は完全に機能しますが、このリクエストにキー/値のペアを添付します。残念ながら、私はこのフォームの投稿と一緒にこのリクエストにキーバリューのペアを付ける方法を知らない!

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") 
         }); 

      }; 

これを修正するには、http httpの専門家または私よりスマートな人から聞きたいことがあります。

答えて

0

私はあなたのformData変数に別のデータを追加できると思います。次のように;

fd.append('key', value); 

または、そのリクエストでjsonデータを送信する場合。

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

バックエンド側。

私が知る限り、あなたはアップロードしたファイルにアクセスするためにreq.filesを使用します。今、私はあなたの要求の中であなたの他のデータに到達するためにreq.bodyを使用することができると思います。好き。 req.body.jsonDataまたはreq.body.key。可能であれば私が見つけた

+1

@ user2355058私は自分の答えを更新しました。 –

+0

アリを助けてくれてありがとう。残念ながら、req.bodyとreq.filesは空です。画像ファイルとともに番号を送信したいだけです。おそらく複雑さはContent-Typeにあります。 –

+1

要求の本文を解析するためにbody-parserを使用していますか? https://github.com/expressjs/body-parser存在しない場合、reqのbodyプロパティは表示されません。 –

0

最も基本的なソリューションは、サーバ側

value = req.query.key 

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

、その後のようなURLにパラメータを追加することで、私はよりよい解決策をいただければ幸いです。ありがとう。

関連する問題