nodeのファイルのアップロードでreq.files.hogeがundefinedになる

html側

<form action="/upload" method="post" enctype="multipart/form-data">
  <input type="file" name="uploadfile"/>
  <input type="submit" value="送信"/>
</form>


node側

/* app.js */
....
app.post('/upload', function (req, res) {
    fs.readFile(req.files.uploadfile.path, function (err, data) {
        var newPath = __dirname + "/public/upload/image/" + req.files.uploadfile.originalname;
        fs.writeFile(newPath, data, function (err) {
            res.redirect("/");
        })
    });
});
....


で、なんとなくサンプル作って実行してみると


f:id:koooya:20140729163546p:plain


undefinedになる・・・・
いろんなサイトサイトのサンプル試してみたけどダメだった。。。
で、辿り着いたのが、

node.js - File uploading with Express 4.0: req.files undefined - Stack Overflownode.js - File uploading with Express 4.0: req.files undefined - Stack Overflow

どうやらbody-parserがmultipartに対応しなくなったらしい。

/* app.js */
var multer = require('multer');
app.use(multer({ dest: './upload/'}));
....

multerをつかったらうまく行った。