gpt4 book ai didi

node.js - 如何在 Node 和 Express 上使用 `Multer and Sharp` 调整上传图片的大小

转载 作者:行者123 更新时间:2023-12-05 03:53:55 24 4
gpt4 key购买 nike

我尝试在上传图片时调整图片大小,但没有成功。我正在使用 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

我在这里做错了什么?

最佳答案

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

sharp(req.file.path)

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

sharp(req.file.buffer)

...

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

关于node.js - 如何在 Node 和 Express 上使用 `Multer and Sharp` 调整上传图片的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61423855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com