2017-10-09 54 views
0

這是我的看法upload.ejs頁:的Node.js /郵政快遞方式登錄的控制檯未定義

<%- 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不會解析多部分(Form數據)數據。您需要使用其他軟件包(https://www.npmjs.com/package/multer)。

僅當您上傳圖像,文檔等文件時才使用多部分請求。如果您使用的是正常數據,那麼您可以刪除,因爲多部分請求被認爲比正常發佈請求更重。

enctype="multipart/form-data"