РЕШЕНО!!! multer req.тело не определено, когда я набираю отдельный файл, как другое промежуточное программное обеспечение

#node.js #multer

Вопрос:

кто-нибудь, помогите мне… как я могу ввести multer middleware конфигурацию в отдельный файл, например, в предопределенное расположение папок, как я сделал ниже. но ценность req.body всегда undefined

server.js

 app.use('/public' express.static('public)) 
 

router.js

Здесь я добавляю промежуточное программное обеспечение multer, как показано ниже

 router.post('/project', middleware.authentication.isAuth, middleware.fileUpload.image, controller.project.post);
 

middleware/uploadImage.js

именно здесь я написал промежуточное программное обеспечение multer

 middleware.image = (req, res, next) => {
    const fileStorage = multer.diskStorage({
        destination: (res, file, cb) => {
            cb(null, 'images')
        },
        filename: (req, file, cb) => {
            cb(null, new Date().getTime()   '-'   file.originalname)
        }
    })
    const fileFilter = (req, file, cb) => {
        if (
            file.mimetype === 'image/png' || 
            file.mimetype === 'image/jpg' || 
            file.mimetype === 'image/jpeg'
        ){
            cb(null, true) 
        } else {
            cb(null, false)
        }
    }

    app.use('/images', express.static(path.join(__dirname, 'images')))
    app.use(multer({storage: fileStorage, fileFilter: fileFilter}).single('image'))
    
    next()
}
 

РЕШЕНО!

Вставьте приведенный ниже код в middleware/filename.js файл

 // image configuration ==================
// set image storage 
const imageStorage = multer.diskStorage({
    destination: (res, file, cb) => {
        cb(null, './public/images')
    },
    filename: (req, file, cb) => {
        cb(null, new Date().getTime()   '-'   
file.originalname.toLowerCase())
    }
})
// filter an image 
const imageFilter = (req, file, cb) => {
    if (
        file.mimetype === 'image/png' || 
        file.mimetype === 'image/jpg' || 
        file.mimetype === 'image/jpeg') {
       cb(null, true) 
    } else {
        cb(null, false)
    }
}

// middlewares
const uploadImage = multer({
    storage: imageStorage, 
    fileFilter: imageFilter,
    limits: {
        fieldSize: 1024 * 1024 * 5 // max file size 5MB
    }
}).single('image')

middleware.image = uploadImage

module.exports = middleware;
 

Комментарии:

1. попробуйте войти в консоль, req.image возможно , вы получите данные своего изображения.