gpt4 book ai didi

node.js - 通过 multerjs 上传图片 + 复制(低分辨率缩略图)

转载 作者:行者123 更新时间:2023-12-04 17:56:31 24 4
gpt4 key购买 nike

我正在构建一个允许用户上传头像的网络应用程序。但是,除了头像之外,我还想创建一个低分辨率缩略图(例如 64 x 64)并将其存储在我的服务器上。目前我正在使用此代码将图像存储在两个目录中,但这两个目录中的分辨率相同。如何在缩略图目录中存储不同的分辨率?

 var storage =   multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads/thumbs');
callback(null, './uploads');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
}
});

最佳答案

您可以使用 sharp 在路由器中调整图像大小:

const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, './uploads')
},
filename: (req, file, cb) => {
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
}
})

和:

router.post('/', upload.single('image'), async (req, res) => {    
try {
const { filename: image } = req.file
await sharp(req.file.path, { failOnError: false })
.resize(64, 64)
.withMetadata()
.toFile(
path.resolve(req.file.destination, './thumbs', image.replace(/\.(jpeg|png)$/, `.jpg`))
)
fs.unlink(req.file.path)
return res.json({
thumb_url: '/uploads/thumbs/' + image.replace(/\.(jpeg|png)$/, `.jpg`)
});
} catch (err) {
console.error(err.message);
res.status(500).send('Server Error!');
}
});

fs.unlink(req.file.path)./uploads 中删除您的原始图像

关于node.js - 通过 multerjs 上传图片 + 复制(低分辨率缩略图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40107164/

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