Как я могу конвертировать cb error в json формат в мултере - PullRequest
0 голосов
/ 17 марта 2020

Я пишу код для загрузки изображения в NodeJS, используя multer

Мой код

var upload = multer({
    storage: storage,
    limits: {
        fileSize: 1024 * 1024 * 5
    },
    fileFilter: (req, file, cb) => {
        if (file.mimetype == "image/png" || file.mimetype == "image/jpg" || file.mimetype == "image/jpeg") {
            cb(null, true);
        } else {
            return cb(JSON.stringify({ "success": false, "message": "invalid mime type" }), false);

        }
    }
});

router.post('/upload', upload.single('image'), (req, res, next) => {
    const io = req.app.get('io');
    const product = new db.product({
        name: req.body.name,
        category: req.body.category,
        image: req.protocol + "://" + req.hostname + ":" + req.socket.localPort + "/img/roundtshirt/" + req.file.filename
    });
});

Когда я загружаю неверный файл Почтальон , я получил следующую ошибку, такую ​​как мой обратный вызов

<code><pre>{&quot;success&quot;:false,&quot;message&quot;:&quot;invalid mime type&quot;}

Однако я хочу преобразовать эту ошибку в правильный формат json .

Я попытался вернуть json, но получил ошибку.

1 Ответ

1 голос
/ 17 марта 2020

Вы можете использовать пользовательскую обработку ошибок из Multer здесь

Это мой пример:

const upload = multer({
    storage: storage,
    limits: {
        fileSize: 1024 * 1024 * 5
    },
    fileFilter: (req, file, cb) => {
        if (file.mimetype == "image/png" || file.mimetype == "image/jpg" || file.mimetype == "image/jpeg") {
            cb(null, true);
        } else {
            return cb(new Error('Invalid mime type'));
        }
    }
});

const uploadSingleImage = upload.single('image');

app.post('/upload', function (req, res) {

    uploadSingleImage(req, res, function (err) {

        if (err) {
            return res.status(400).send({ message: err.message })
        }

        // Everything went fine.
        const file = req.file;
        res.status(200).send({
            filename: file.filename,
            mimetype: file.mimetype,
            originalname: file.originalname,
            size: file.size,
            fieldname: file.fieldname
        })
    })
})

Полный пример кода, пожалуйста, посетите https://gist.github.com/huynhsamha/348722d47ee457454688698ff77fee1a

Спасибо за чтение: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...