2017-09-30 20 views
0

NodeJSアプリケーションでbody-parser、express、およびmulterを使用しています。 サインアップフォームにImageといくつかのテキストフィールドをアップロードする必要があります。私はこれに対してmulterを使用しています。私はここで提案したのと全く同じことを試しました - https://stackoverflow.com/questions/35847293/uploading-a-file-and-passing-a-additional-parameter-with-multerノードJSのmulterを使用した画像とテキストのアップロード

しかし、私はreq.bodyに空のオブジェクトを取得します。 ファイルは宛先フォルダに作成されますが、req.files.forEachメソッドは空の結果を記録します。ここで

は私のコードです:

HTMLのフロントエンドコード

  <form id="form" enctype="multipart/form-data" action="/profile" method="post" > 

      <label>Name</label> 
      <input type="text" placeholder=" Name" name="name" id="name" class="form-control"> 

      <label>Logo</label> 
      <input type="file" placeholder="Logo" name="logo" id="logo" class="form-control"> 

      <button id="addform" type="submit" class="btn btn-primary">Add Profile</button> 


     </form> 

サーバーサイドコード:ノードで

app.post('/profile', function(req, res) { 

     var storage = multer.diskStorage({ 
       destination: __dirname+'/file/uploads/' 
      }); 
    var upload = multer({ storage : storage}).any(); 

      upload(req,res,function(err) { 
       if(err) { 
        console.log(err); 
        return res.end("Error uploading file."); 
       } else { 
       console.log(req.body); 
       console.log(req.files); 
       req.files.forEach(function(f) { 
        console.log(f); 
        // and move file to final destination... 
       }); 
       res.end("File has been uploaded"); 
       } 
       }); 

    }); 

ログ出力:

{} 
[] 
+0

私は正確なコードをコピーして試しました。また、本体とファイルがコンソールに記録されていても、すべてが正常に動作しています。だから、おそらく他のコードの問題?多分ミドルウェアですか?お役に立てれば。 –

+0

はあなたの問題を解決しましたか? – Sagar

+0

はい、実際には、ボタンのクリックを参照しながら '#'を追加するのを忘れていました。 – Anirudh

答えて

0

req本体の外でMulterを移動し、filenameパラメータを含めてみてください。私はあなたのコードを修正しました。

​​
関連する問題