在 express.js 中,req.files 未定义

Posted

技术标签:

【中文标题】在 express.js 中,req.files 未定义【英文标题】:In express.js, req.files is undefined 【发布时间】:2012-12-10 10:38:15 【问题描述】:

我尝试将 png 上传到我的 node.js 服务器,但每次调用 req.files.avatar 时,都会出现错误并显示 TypeError: Cannot read property 'avatar' of undefined

【问题讨论】:

客户端上传文件的代码是什么样的? 你使用bodyParser作为中间件吗? 【参考方案1】:

问题是我没有在表格中写enctype="multipart/form-data"。这就是 req.files 未定义的原因。

【讨论】:

不是真的,我有 enctype="multipart/form-data" 但得到了同样的错误 对我来说(Express 4.17.1)就是这样。似乎 busboy 中间件只与多部分标题请求挂钩。【参考方案2】:

另外,我认为您必须在 任何使用 app.router 或静态中间件的说明之前包含您的 bodyParser。经过反复试验,这是适合我的顺序。

app.configure(function()
    app.set('port', process.env.port || 3000);
    app.set('views', __dirname + '/app/server/views');
    app.set('view engine', 'jade');
    app.locals.pretty = true;
    app.use(express.favicon());
    app.use(express.bodyParser(  keepExtensions: true, uploadDir: __dirname + '/app/uploads'  ));
    app.use(express.methodOverride());
    app.use(express.cookieParser());
    app.use(express.session( secret: 'super-duper-secret-secret' ));
    app.use(app.router);
    app.use(require('stylus').middleware( src: __dirname + '/app/public' ));
    app.use(express.static(__dirname + '/app/public'));
);

【讨论】:

我完全忘记了正文解析器,这解决了我的问题。谢谢!

以上是关于在 express.js 中,req.files 未定义的主要内容,如果未能解决你的问题,请参考以下文章

jquery formdata 在 express req.files 中返回 null

使用 Express 4.0 上传文件:req.files undefined

无法使用 multer 从 req 对象访问 req.files

节点 js multer 文件上传不起作用。 req.file 和 req.files 始终未定义

我们可以将 multer 配置为不在本地存储文件并且仅用于使用 req.files.image.path 吗?

multer req.files undefined with axios in react