如何在Node and Express上使用`Multer and Sharp`调整上传图像的大小

编程入门 行业动态 更新时间:2024-10-10 00:27:46

如何在Node and Express上使用`Multer and Sharp`调整上传<a href=https://www.elefans.com/category/jswz/34/1771430.html style=图像的大小"/>

如何在Node and Express上使用`Multer and Sharp`调整上传图像的大小

我试图在上传图片时调整其大小,但是我没有成功。我正在使用Node,Expressjs,Mongoose,Multer和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 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) )
 }
})

这是它给的错误

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

请,我在这里做错了什么?任何小的帮助将不胜感激。

回答如下:

如果在dest中指定multer()选项,它将文件保存到该目录,并且您必须像这样将目录传递到sharp()

sharp(req.file.path)

否则,您可以删除dest选项并将缓冲区传递给sharp()

sharp(req.file.buffer)

...

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

更多推荐

如何在Node and Express上使用`Multer and Sharp`调整上传图像的大小

本文发布于:2024-05-07 07:21:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755103.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:图像   大小   上传   如何在   Node

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!