我正在尝试在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
中访问其信息。任何人都可以帮助我吗?
答案 0 :(得分:16)
使用upload.single()
时,根据multer文档,生成的文件应位于req.file
,而不是req.files
。请参阅示例in their doc here。
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中。