#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
возможно , вы получите данные своего изображения.