使用multer上传文件时,req.files未定义

我正在尝试在Express.js 4中构build一个上传图像的Node.js应用程序。 我决定使用multer模块,但不能通过multer访问上传​​的文件。 这是我正在使用的代码。 我将其限制在那些我认为相关的部分。

玉代码:

 form(method="POST", action="createPost", enctype="multipart/form-data") input(type="file", name="photo") br input(type="submit" value="upload") 

在路线/ admin.js中:

 var express = require('express'); var multer = require('multer'); var router = express.Router(); var upload = multer({dest: './uploads/'}); router.post('/createPost', upload.single('photo'), function(req, res, next) { console.log('files:', req.files); console.log('body:', req.body); // more code } 

输出:

 files: undefined body: {} 

该文件存储在uploads文件夹中,但是我无法访问req.files信息。 谁能帮我?

当使用upload.single() ,根据multer文档,生成的文件应该在req.file ,而不是req.files 。 在这里看到他们的文档中的例子。

 app.post('/profile', upload.single('avatar'), function (req, res, next) { // req.file is the `avatar` file // req.body will hold the text fields, if there were any }) 

而且,这里是upload.single()的实际文档:

。单(字段名)

接受名称为fieldname的单个文件。 单个文件将被存储在req.file中。