tengo una funcion
function fileFilter(req, file, cb) { if (file.mimetype !== 'image/png' && file.mimetype !== 'image/jpg' && file.mimetype !== 'image/gif' ) { console.log('Wrong format!'); return cb(null, false); } if ( file.size > 10000 ){ console.log('Image is too big!'); return cb(null, false); } cb(null, true); } var upload = multer({ storage: storage, fileFilter: fileFilter });Esta función funciona cuando estoy haciendo una solicitud de publicación.
router.post('/changeAvatar', upload.single('avatar'), function(req, res) { var id = req.user._id; res.redirect('/user/'+id); }); ¿Cómo puedo poner flash ( connect-flash ) en lugar de mi console.log?
Connect-flash ya está instalado, con cookies y sessions . Intenté diferentes formas, pero no puedo entender la filosofía de los mensajes flash...
primero en su script de entrada, debe usar el middleware connect flash:
var express = require('express'); var session = require('express-session'); var cookieParser = require('cookie-parser'); var flash = require('connect-flash'); var app = express(); app.use(cookieParser('secret')); app.use(session({cookie: { maxAge: 60000 }})); app.use(flash());entonces su función debería verse así:
function fileFilter(req, file, cb) { if (file.mimetype !== 'image/png' && file.mimetype !== 'image/jpg' && file.mimetype !== 'image/gif' ) { req.flash('error', 'Wrong format!'); return cb(null, false); } if ( file.size > 10000 ){ req.flash('error', 'Image is too big!'); return cb(null, false); } cb(null, true); }finalmente en la vista '/usuario/'+id puede obtener datos de flash con:
JSON.stringify(req.flash('error'));