2013-07-31 50 views
0

我已經把所有東西都剝離到絕對的骨頭上,試圖弄清楚什麼是錯誤的,並且仍然無法讓bodyParser做任何事情。它甚至不能用於.txt文件。express.bodyParser不解析?

server.js

var  cfg  = require(__dirname + '/config'), 
    express  = require('express'); 


var app = express(); 

app.set('view engine', 'ejs'); 
app.set('views', __dirname + '/views'); 
app.use(express.logger(cfg.LOGGER)); 
app.use(require('connect').bodyParser()); 
app.use(express.static(__dirname + '/public')); 
app.use(express.favicon(__dirname + '/public/favicon.ico')); 

app.get('/', function(req, res) { 
    res.render('index'); 
    res.end(); 
}); 

app.post('/upload', function(req,res) { 
    console.log(req.body.file); 
    res.end(); 
}); 

app.listen(2017); 

index.ejs

<form enctype="multipart/form-data" action="/upload" method="POST"> 
    <input id="multipart/form-data" type="file" name="foo" /> 
    <button>Upload</button> 
</form> 

結果是req.body.fileundefined

回答

2

可以使用req.files.<yourFileInputFieldName>訪問文件:

console.log(req.files.foo); 

更多的信息在this section的文檔。

+0

雅我知道。其中一件事是在這一點上 - 我只想知道爲什麼上述*不起作用。無論如何,我會將您的答案標記爲正確,因爲沒有人會迴應。感謝您的迴應! – Colin

+0

@ColinMartell它不起作用,因爲'files'僅僅是'res.body'提供的。分離來自[formidible](https://npmjs.org/package/formidable),它將'fields'('body')和'files'分別提供給['multipart'中間件](http:// www .senchalabs.org /連接/ multipart.html)。 –

0

更改此

app.use(require('connect').bodyParser()); 
      as 
    app.use(express.bodyParser()); 


    app.post('/upload', function(req,res) { 
    console.log(req.body.foo);//in req.body u have to mention the name of the file.. 
    res.end(); 
    }); 
+0

req.body是一個空對象 – Colin

+0

@ColinMartell看到我更新的答案。 – sachin