Website : rimsha.abasa.com
backdoor
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
ah7-backend
/
src
/
services
/
Filename :
fileUploadService.js
back
Copy
import multer from 'multer'; import path from 'path'; import { fileURLToPath } from 'url'; // Set absolute path for the uploads folder const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const uploadPath = path.join(__dirname, '../../public/uploads'); // Multer storage configuration const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, uploadPath); // Save file to uploads folder }, filename: (req, file, cb) => { const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1e9); const ext = path.extname(file.originalname); // Get file extension cb(null, file.fieldname + '-' + uniqueSuffix + ext); // Generate unique file name }, }); // File filter for allowed types const fileFilter = (req, file, cb) => { const allowedTypes = ['image/jpeg', 'image/png', 'image/jpg']; if (allowedTypes.includes(file.mimetype)) { cb(null, true); } else { cb(new Error('Invalid file type. Only JPEG, PNG, and JPG are allowed.'), false); } }; // Multer instance const upload = multer({ storage, fileFilter, limits: { fileSize: 1024 * 1024 * 2 }, // 2MB file size limit }); export const uploadSingle = upload.single('profilePicture'); // Middleware for single file upload // import { S3Client } from "@aws-sdk/client-s3"; // import { Upload } from "@aws-sdk/lib-storage"; // import multer from "multer"; // import dotenv from "dotenv"; // dotenv.config(); // Load .env variables // // AWS S3 configuration // const s3 = new S3Client({ // region: process.env.AWS_REGION, // Ensure region is properly set // credentials: { // accessKeyId: process.env.AWS_ACCESS_KEY_ID, // secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, // }, // }); // // Multer configuration // const upload = multer({ // storage: multer.memoryStorage(), // fileFilter: (req, file, cb) => { // const allowedTypes = ["image/jpeg", "image/png", "image/jpg"]; // if (allowedTypes.includes(file.mimetype)) { // cb(null, true); // } else { // cb(new Error("Invalid file type. Only JPEG, PNG, and JPG are allowed."), false); // } // }, // limits: { fileSize: 1024 * 1024 * 2 }, // 2MB limit // }); // // File upload function // const uploadToS3 = async (file, folder = "uploads") => { // const uniqueSuffix = Date.now() + "-" + Math.round(Math.random() * 1e9); // const ext = file.originalname.split(".").pop(); // const key = `${folder}/${file.fieldname}-${uniqueSuffix}.${ext}`; // const params = { // Bucket: process.env.AWS_BUCKET_NAME, // Key: key, // Body: file.buffer, // ContentType: file.mimetype, // }; // const upload = new Upload({ // client: s3, // params, // }); // const result = await upload.done(); // return result.Location; // Return S3 URL // }; // export { upload, uploadToS3 };