Multer 不保存图片

Multer isn't saving pictures

我的路由器有多个设置 -

const express = require('express');
const path = require('path');
const multer = require('multer');
const config = require('config');

const router = express();
const storage = multer.diskStorage({
    destination(req, file, cb) {
        cb(null, 'picture_db');
    },
    filename(req, file, cb) {
        cb(null, Date.now() + path.extname(file.originalname));
    }
});

const upload = multer({
    storage,
    limits: {
        fileSize: 2 * 1024 * 1024
    },
    fileFilter(req, file, cb) {
        const ext = path.extname(file.originalname);
        if (ext !== '.jpg' && ext !== '.jpeg' && ext !== '.png') {
            const err = new Error('Extention');
            err.code = 'EXTENTION';
            return cb(err);
        }
        cb(null, true);
    }
}).single('file')

router.post('/image',
    async(req, res) => {
        try {
            let status;

            upload(req, res, err => {
                let error = '';

                if (err) {
                    if (err.code === 'LIMIT_FILE_SIZE') {
                        error = 'file size';
                    }
                    if (err.code === 'EXTENTION') {
                        error = 'file extention';
                    }
                    status = error;
                }
            });

            return res.status(200).json({
                msg: status || 'OK',
            });
        } catch (err) {
            return res.status(500).json({
                msg: "a"
            });
        }
    }
);

module.exports = router;

以及项目根目录中的一个文件夹 - picture_db

我还有一个邮递员查询 -

为什么图片没有保存在 picture_db 中?

我认为你这样做是错误的。上传文件时,您没有命名文件的密钥。

相反,您应该将邮递员中的密钥添加到 'file' 并上传文件并 运行 它。