Files
resume-builder-mern/backend/controllers/uploadImages.js
2025-07-07 00:52:41 +05:30

59 lines
2.1 KiB
JavaScript

const fs = require("fs");
const path = require("path");
const Resume = require("../models/Resume");
const upload = require("../middlewares/uploadMiddleware");
const uploadResumeImages = async (req, res) => {
try {
upload.fields([{ name: 'thumbnail' }, { name: 'profileImage' }])(req, res, async (err) => {
if (err) {
return res.status(400).json({ message: "File upload failed", error: err.message });
}
const resumeId = req.params.id;
const resume = await Resume.findOne({ _id: resumeId, userId: req.user._id });
if (!resume) {
return res.status(404).json({ message: "Resume not found or unauthorized" });
}
const uploadsFolder = path.join(__dirname, '..', 'uploads');
const baseUrl = `${req.protocol}://${req.get("host")}`;
const newThumbnail = req.files.thumbnail?.[0];
const newProfileImage = req.files.profileImage?.[0];
// If new thumbnail uploaded, delete old one
if (newThumbnail) {
if(resume.thumbnailLink){
const oldThumbnail = path.join(uploadsFolder, path.basename(resume.thumbnailLink));
if (fs.existsSync(oldThumbnail)) fs.unlinkSync(oldThumbnail);
}
resume.thumbnailLink = `${baseUrl}/uploads/${newThumbnail.filename}`;
}
// If new profile image uploaded, delete old one
if (newProfileImage) {
if(resume.profileInfo?.profilePreviewUrl){
const oldProfile = path.join(uploadsFolder, path.basename(resume.profileInfo.profilePreviewUrl));
if (fs.existsSync(oldProfile)) fs.unlinkSync(oldProfile);
}
resume.profileInfo.profilePreviewUrl = `${baseUrl}/uploads/${newProfileImage.filename}`;
}
await resume.save();
res.status(200).json({
message: "Images uploaded successfully",
thumbnailLink: resume.thumbnailLink,
profilePreviewUrl: resume.profileInfo.profilePreviewUrl,
});
});
} catch (err) {
console.error("Error uploading images:", err);
res.status(500).json({ message: "Failed to upload images", error: err.message });
}
};
module.exports = { uploadResumeImages };