Sindbad~EG File Manager
const { v2: cloudinary } = require("cloudinary");
const { CloudinaryStorage } = require("multer-storage-cloudinary");
const multer = require("multer");
const path = require("path");
const fsPromises = require("fs").promises;
// Configuring your Cloudinary credentials
cloudinary.config({
cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET,
});
// Setting up Cloudinary storage for multer
const storage = new CloudinaryStorage({
cloudinary: cloudinary,
params: {
folder: "upload/", // The name of the folder in cloudinary
// allowed_formats: ["jpg", "png"],
},
});
const upload = multer({ storage: storage });
const extractImageIds = (req, res, next) => {
if (req.files.length > 0) {
// Map over `req.files.data` to extract the image IDs
req.imageIds = req.files.map((file) => file.filename.split("/").pop());
} else {
req.imageIds = [];
}
next();
};
const deleteImageFromLocal = async (fileName) => {
try {
await fsPromises.unlink(path.join("./", "uploads", fileName));
return true;
} catch (error) {
console.log(`warning message:${error}`);
}
};
// Delete image function using async/await
async function deleteImage(publicId) {
try {
let result = await cloudinary.uploader.destroy(`upload/${publicId}`);
console.log("Image delete result:", result);
} catch (error) {
console.log("Error in deleting image:", error);
}
}
async function deleteBulkImages(imagesArray) {
try {
const updatedImagesArray = imagesArray.map(
(imageId) => `upload/${imageId.imageUrl}`
);
let result = await cloudinary.api.delete_resources(updatedImagesArray, {
type: "upload",
resource_type: "image",
});
return result.deleted;
} catch (error) {
console.log("Error in deleting image:", error);
}
}
module.exports = {
upload,
deleteImageFromLocal,
extractImageIds,
deleteImage,
deleteBulkImages,
};
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists