2012-12-23 5 views
8

node.jsサーバーにpngをアップロードしようとしますが、req.files.avatarが呼び出されるたびにエラーが表示され、TypeError: Cannot read property 'avatar' of undefinedと表示されます。express.jsでreq.filesが定義されていません

+0

ごめんなさい、申し訳ありません – MrMangado

+0

クライアント側でファイルをアップロードするコードはどのように見えますか? – JohnnyHK

+0

bodyParserをミドルウェアとして使用していますか? –

答えて

17

問題は、enctype="multipart/form-data"をフォームに書き込んでいないことでした。だから、req.filesは未定義です。

+6

実際には、私はenctype = "multipart/form-data"を持っていますが、同じエラーが発生しました – ngakak

16

の前にbodyParser を含める必要があります。app.routerまたは静的ミドルウェアの使用方法については、こちらをご覧ください。いくつかの試行錯誤の後、これは私のために働く順序です。

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')); 
}); 
+2

ボディパーサーを完全に忘れてしまい、どうも! – x1a0

関連する問題