当使用Multer上传文件时,req.files未定义。

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

Jade代码:

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 中访问其信息。有人能帮帮我吗?

1个回答

15

根据 multer 的文档,当使用upload.single()时,生成的文件应该在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()的实际文档:

.single(fieldname)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接