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

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

【问题讨论】:

  • 客户端上传文件的代码是什么样的?
  • 你使用bodyParser作为中间件吗?

标签: node.js upload express


【解决方案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'));
});

【讨论】:

  • 我完全忘记了正文解析器,这解决了我的问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 2012-02-28
相关资源
最近更新 更多