问题描述
我正在使用multer和multer-s3将图像上传到s3存储桶。
我想保持原始图像不变,但需要其他缩略图图像。 然后将它们都上传到s3。 我发现可以使用清晰的图像来调整图像大小,但不确定如何执行此特定任务。
任何人都可以建议如何做吗?
const aws = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');
aws.config.update({
secretAccessKey: process.env.AWSSecretKey,accessKeyId: process.env.AWSAccessKeyId,});
const s3 = new aws.S3();
const fileFilter = (req,file,cb) => {
if (file.mimetype === "image/jpeg" || file.mimetype === "image/png") {
cb(null,true);
} else {
cb(new Error("Invalid file type,only JPEG and PNG is allowed!"),false);
}
};
const storage = multerS3({
s3: s3,bucket: process.env.S3_Bucket_Name,acl: 'public-read',metadata: (req,cb) => {
cb(null,{
fieldName: file.fieldname
});
},key: (req,Date.now().toString())
}
});
const upload = multer({
fileFilter: fileFilter,storage: storage,});
module.exports = upload;
按以下方式进行路由
router.post('/post/add',checkAuth,upload.single("photo"),PostController.createPost);
解决方法
保存图像后,可以调整其大小。
您只需要将路径传递到图像即可。
请注意:您可以获取图像的宽度和高度,并检查图像是否需要调整大小。
$(document).ready(function(){
$('input').focusout(function(){
if($(this).val().indexOf('@') > 0){
$('.output').html('Invalid E-mail')
}else if($(this).val().indexOf('@') > -1 &&
$(this).val().indexOf('.') > -1){
$('.output').html('Valid E-mail');
}else{
$('.output').html('Invalid E-mail')
}
});
,
尝试usage of sharpe module
。根据需要更改路由处理程序
router.post(
"/users/me/avatar",authMiddleware,upload.single("avatar"),async (req,res) => {
const buffer = await sharpe(req.file.buffer)
.png()
.resize({
width: 300,height: 300
})
.toBuffer();
req.user.avatar = buffer;
await req.user.save();
res.send();
},