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

Javascript 使用multer上载文件时,req.files未定义,javascript,node.js,express,multer,Javascript,Node.js,Express,Multer,我正在尝试在Express.js 4中构建一个Node.js应用程序,用于上传图像。我决定使用multer模块,但无法通过req.files访问上传的文件。 这是我正在使用的代码。我把它限制在我认为相关的部分 玉码: form(method="POST", action="createPost", enctype="multipart/form-data") input(type="file", name="photo") br input(typ

我正在尝试在Express.js 4中构建一个Node.js应用程序,用于上传图像。我决定使用
multer
模块,但无法通过
req.files
访问上传的文件。 这是我正在使用的代码。我把它限制在我认为相关的部分

玉码:

form(method="POST", action="createPost", enctype="multipart/form-data")
        input(type="file", name="photo")
        br
        input(type="submit" value="upload")
在routes/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
。参见示例


下面是
upload.single()
的实际文档:

.single(字段名)

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

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
})