import s3 from '@app/lib/s3';
import multerBase from 'multer';
import multerS3 from 'multer-s3';
import path from 'path';
import crypto from 'crypto';
const avatarMulter = multerBase({
limits: { fileSize: 8 * 1024 * 1024 }, // 8MB
fileFilter: (_req, file, cb) => {
const allowed = [
'image/jpeg',
'image/png',
'image/webp',
'image/jpg'
];
cb(null, allowed.includes(file.mimetype));
},
storage: multerS3({
s3,
acl: "public-read",
contentDisposition: "inline",
bucket: process.env.S3_BUCKET!,
metadata: (req, file, cb) => {
cb(null, { fieldName: file.fieldname });
},
key: (req, file, cb) => {
const ext = path.extname(file.originalname).slice(1);
const uuid = crypto.randomUUID();
cb(null, `avatars/${uuid}.${ext}`)
},
})
})
export default avatarMulter;