2011-12-12 12 views
5

Wysyłam obrazy z połączyć formularz. Ale to nie działa, jeśli korzystam z bodyParser(). I na odwrót, jeśli nie używam bodyParser, nie mogę przesyłać plików?Expressjs bodyParser and connect-form

Jak sprawić, by grały razem? Tu jest mój config:

app.configure(function() { 
    app.register('.html', require('ejs')); 
    app.set('views', __dirname + '/../views'); 
    app.set('view engine', 'html'); 
    app.use(gzippo.staticGzip(__dirname + '/../public'),{ maxAge: 86400000 }); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(form({ 
     keepExtensions: true, 
     uploadDir: __dirname + '/../tmp' 
    })); 
    app.use(express.cookieParser()); 
    app.use(express.session({ 
     secret: 'test', 
     cookie: { secure: true }, 
     store: new MySQLSessionStore(client.database, client.user, client.password) 
    })); 
    app.use(expressValidator); 
    app.use(app.router); 
    app.use(express.csrf()); 
}); 

Odpowiedz

5

Jeśli używasz najnowszej Express, nie trzeba dołączyć połączyć postać (która jest nieaktualna od Połącz 1.8.x).

Wystarczy użyć pliku req.files na swoich trasach, aby pobrać przesłane pliki, Express wykona resztę. Sprawdź ten wpis:

http://tjholowaychuk.com/post/12943975936/connect-1-8-0-multipart-support

+0

Oh ów miły :) Ale teraz mam problem z nazwą pliku. Z 'req.files.image.filename' otrzymuję nazwę obrazu przed jego przesłaniem. Zmieniono nazwę na losowy ciąg znaków lub coś innego. Gdzie jest ten zestaw? Nie możesz znaleźć niczego na ten temat? – georgesamper

+0

Otrzymasz nazwę i ścieżkę do obrazu. Po prostu przenieś ten obraz z tymczasowej lokalizacji do pożądanego i dobrze Ci pójść :) – alessioalex

+0

Łącze jest teraz zepsute, lepiej wstawić odpowiedź zamiast wklejać link w –

Powiązane problemy