在 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 始终未定义