0

我有一个功能

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 });

当我发出发布请求时,此功能有效。

router.post('/changeAvatar', upload.single('avatar'), function(req, res) {
    var id = req.user._id;
    res.redirect('/user/'+id);
});

如何将 flash ( connect-flash) 放在我的 console.log 中?

Connect-flash已安装,带有cookiessessions。我尝试了不同的方法,但我无法理解闪存信息的哲学......

4

1 回答 1

2

首先在您的入口脚本中,您应该使用连接闪存中间件:

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());

那么你的函数应该是这样的:

  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);
}

最后在 '/user/'+id 视图中,您可以使用以下命令从闪存获取数据:

JSON.stringify(req.flash('error'));
于 2017-04-21T01:03:03.480 回答