2012-12-23 2 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/양식 데이터"가 있지만 동일한 오류가 발생했습니다 – 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

관련 문제