Как изменить размер и изображение при загрузке, с Node, express, mon goose и Multer - PullRequest
0 голосов
/ 23 апреля 2020

Я пытался изменить размер своего изображения, когда оно загружается, но я не могу с этим справиться. Я использую Node, Expressjs, Mongoose, Multer and Sharp. Как изменить его размер при загрузке с помощью Sharp.

Вот мои маршруты создания

router.post('/create', upload.single('cover'), async (req, res, next) => {
   const fileName = req.file != null ? req.file.filename : null
   let witdth = 100;
   let height = 100;

   sharp(req.file)
   .resize(witdth, height).toFile(req.file.path)


   const event = new Event({
   startingDate: req.body.startingDate,
   closingDate: req.body.closingDate,
   title: req.body.title,
   description: req.body.description,
   eventImage: fileName 
  })
  try {    
    const events = await event.save()
    res.redirect("/events")

   } catch {
    if (event.eventImage != null) {
      removeeventImage(event.eventImage)
   }
    res.render("events/new")
 }
});

Мне потребовалось указать здесь

const sharp = require('sharp');

и вот моя загрузка путь

const uploadPath = path.join('public', Event.eventImageBasePath)
const imageMineTypes = ['image/jpeg', 'image/png', 'image/gif']

const upload = multer({ 
  dest: uploadPath,
  fileFilter:  (req, file, callback) => {
  callback(null, imageMineTypes.includes(file.mimetype) )
 }
})

и моя модель экспортирует этот путь в маршрут

const eventImageBasePath = 'uploads/eventImages'

module.exports.eventImageBasePath = eventImageBasePath

Я выдаю мне эту ошибку

(node:7447) UnhandledPromiseRejectionWarning: Error: Input file is 
 missing

Пожалуйста, как я могу изменить размер изображение при загрузке в базу данных или после загрузки? любая маленькая помощь будет оценена. Thankss

...