图像的大小"/>
如何在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`调整上传图像的大小
发布评论