2017-10-09 10 views
0

ここに私の見解upload.ejsページです:のNode.js/Expressのpostメソッドログがコンソールで未定義

<%- include('header' ,{ title:"Playground" }) -%> 
<div class="wrapper"> 
    <form action="/upload" method="POST" enctype="multipart/form-data"> 
    <input type="text" name="name" placeholder="Image Name"> 
    <input type="text" name="description" placeholder="Description"> 
    <button type="submit" name="submit">Upload</button> 
    </form> 
</div> 
<%- include('footer') -%> 

と、これは私のルートupload.jsファイルです:クリックした後

var express = require('express'); 
var router = express.Router(); 
var db = require('../helpers/db'); 
var bodyParser = require('body-parser'); 
var urlencodedParser = bodyParser.urlencoded({ extended: false }); 

router.get('/', function(req, res, next) { 
    res.render('upload'); 
}); 

router.post('/', urlencodedParser, function(req, res, next) { 
    console.log(req.body.name); 
    res.render('upload'); 
}); 

module.exports = router; 

提出ボタンを押すと、コンソールに未定義になります。私がログreq.bodyをコンソールにしようとすると、私は空になります{}。

+0

あなたのフォームアクションは '"/upload "'に設定されており、この投稿ルート ''/''でチェックインしています。 –

+0

'router.post( '/ upload'、.......)' – taha

+1

あなたは 'multipart/form-data'を使って送信しますが、URLエンコードされたパーサーは受信します...正しい?特に、body-parserのNPMページには[mulipartはしていません]と書かれています(https://www.npmjs.com/package/body-parser#bodyparserurlencodedoptions)。 –

答えて

2

bodyparserは、マルチパート(フォームデータ)データを解析しないことに注意してください。それには別のパッケージを使用する必要があります(https://www.npmjs.com/package/multer)。

画像、ドキュメントなどのファイルをアップロードする場合にのみ、マルチパートリクエストを使用します。通常のデータを使用している場合は、マルチパートリクエストが通常のポストリクエストよりも重いとみなされるため、削除することができます。

enctype="multipart/form-data" 
関連する問題