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

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

问题是我没有在表单中写入enctype="multipart/form-data" 。 这就是为什么req.files未定义。

另外我认为你必须使用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')); });