2011-12-12 20 views
5

Estoy cargando imágenes con conecta el formulario. Pero no funciona si uso el bodyParser(). Y a la inversa, si no uso bodyParser, ¿no puedo subir archivos?Expressjs bodyParser y connect-form

¿Cómo puedo hacer que jueguen juntos? Aquí está mi 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()); 
}); 

Respuesta

5

Si está utilizando la última expreso que no es necesario incluir conectar forma (que está en desuso desde Conectar 1.8.x).

Simplemente use los archivos req. en sus rutas para obtener los archivos cargados, Express se encarga del resto. Echa un vistazo a este post:

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

+0

Oh eso es agradable :) Pero ahora tengo un problema con el nombre de archivo. Con 'req.files.image.filename', obtengo el nombre de la imagen antes de cargarla. Y se renombra a una cadena aleatoria o algo después. ¿Dónde está ese conjunto? Parece que no puede encontrar nada sobre el tema? – georgesamper

+0

Obtiene el nombre y la ruta de la imagen. Simplemente mueva esa imagen de la ubicación temporal a la deseada y está listo para ir :) – alessioalex

+0

El enlace está roto ahora, sería mejor poner la respuesta aquí en lugar de pegar un enlace en –

Cuestiones relacionadas