mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
ready to test
Testing Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/***********************************************************************************************************************************************************************
|
||||
* File Name: avatar_upload.middleware.js
|
||||
* Type of Program: Middleware
|
||||
* Description: Multer config for avatar uploads.
|
||||
* Memory storage — buffer is passed directly to S3.
|
||||
* Accepts JPEG, PNG, WebP, GIF only. 5 MB limit.
|
||||
*
|
||||
* Author: Kenneth Obsequio (@lash0000)
|
||||
* Date Created: Jun. 18, 2026
|
||||
***********************************************************************************************************************************************************************/
|
||||
'use strict';
|
||||
|
||||
const multer = require('multer');
|
||||
|
||||
const ALLOWED_MIME = new Set(['image/jpeg', 'image/png', 'image/webp', 'image/gif']);
|
||||
|
||||
const upload = multer({
|
||||
storage: multer.memoryStorage(),
|
||||
limits: { fileSize: 5 * 1024 * 1024 }, // 5 MB
|
||||
fileFilter(req, file, cb) {
|
||||
if (ALLOWED_MIME.has(file.mimetype)) return cb(null, true);
|
||||
cb(Object.assign(new Error('Only JPEG, PNG, WebP, or GIF images are allowed.'), { code: 'INVALID_TYPE' }));
|
||||
},
|
||||
});
|
||||
|
||||
const avatarSingle = upload.single('avatar');
|
||||
|
||||
// Wraps multer errors into the project's standard error shape.
|
||||
const handleAvatarUpload = (req, res, next) => {
|
||||
avatarSingle(req, res, (err) => {
|
||||
if (!err) return next();
|
||||
|
||||
if (err.code === 'LIMIT_FILE_SIZE') {
|
||||
return res.status(400).json({ status: 'error', message: 'Avatar must be under 5 MB.' });
|
||||
}
|
||||
if (err.code === 'INVALID_TYPE') {
|
||||
return res.status(400).json({ status: 'error', message: err.message });
|
||||
}
|
||||
|
||||
console.error('[MULTER AVATAR]', err);
|
||||
return res.status(400).json({ status: 'error', message: err.message ?? 'Upload failed.' });
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = { handleAvatarUpload };
|
||||
Reference in New Issue
Block a user