2012-12-23 15 views
8

Próbuję przesłać png do mojego serwera node.js, ale za każdym razem, gdy wywoływana jest nazwa req.files.avatar, pojawia się błąd i mówi TypeError: Cannot read property 'avatar' of undefined.W pliku express.js plik req.files jest niezdefiniowany.

+0

Ooo, to prawda, przepraszam – MrMangado

+0

Jak wygląda kod przesyłający plik po stronie klienta? – JohnnyHK

+0

Czy używasz bodyParser jako middleware? –

Odpowiedz

17

Problem polegał na tym, że nie wpisałem w formularzu enctype="multipart/form-data". Właśnie dlatego plik req.files był niezdefiniowany.

+6

niezupełnie, mam enctype = "multipart/form-data", ale mam ten sam błąd – ngakak

16

Również myślę, że musisz dołączyć swój bodyParser przed wszelkie instrukcje używania app.router lub statycznych middleware. Po pewnym okresie prób i błędów jest to kolejność, która działa dla mnie.

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

Całkowicie zapomniałem parser ciała i to rozwiązuje mój problem. Dzięki! – x1a0

Powiązane problemy