File Upload with Multer
File Upload with Multer in Express.js
Express.js-এ ফাইল আপলোড করার সম্পূর্ণ ডিটেইল গাইড
Multer কী এবং কেন ব্যবহার করবেন?
Multer হলো Express.js-এর জন্য একটি জনপ্রিয় middleware যা মূলত multipart/form-data হ্যান্ডেল করে। এই multipart/form-data ফরম্যাট সাধারণত ফাইল আপলোডের সময় ব্যবহার করা হয়।
Multer দিয়ে আপনি:
- Image upload
- Document upload
- Multiple file upload
- File size limit সেট করা
- Storage folder কাস্টমাইজ করা
১. Multer Installation
npm install multer
২. Basic File Upload (Single File Upload)
Step 1: Multer কনফিগারেশন
const express = require("express");
const multer = require("multer");
const app = express();
// Storage settings
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "uploads/"); // Folder name
},
filename: function (req, file, cb) {
cb(null, Date.now() + "-" + file.originalname);
}
});
const upload = multer({ storage: storage });
Step 2: Single File Upload Route
app.post("/upload", upload.single("myfile"), (req, res) => {
res.json({
message: "File uploaded successfully!",
file: req.file
});
});
এখানে "myfile" হচ্ছে frontend form input-এর name।
৩. Multiple File Upload
app.post("/multiple-upload", upload.array("photos", 5), (req, res) => {
res.json({
message: "Multiple files uploaded!",
files: req.files
});
});
উপরের কোডে 5 মানে একজন ইউজার সর্বোচ্চ ৫টি ফাইল আপলোড করতে পারবে।
৪. File Type Validation (Image Only)
const fileFilter = (req, file, cb) => {
if (file.mimetype.startsWith("image/")) {
cb(null, true);
} else {
cb(new Error("Only images are allowed"), false);
}
};
const uploadImages = multer({
storage: storage,
fileFilter: fileFilter
});
এখন route-এ ব্যবহার করুন:
app.post("/image-upload", uploadImages.single("photo"), (req, res) => {
res.json({ message: "Image uploaded!", file: req.file });
});
৫. File Size Limit সেট করা
const uploadLimit = multer({
storage: storage,
limits: { fileSize: 2 * 1024 * 1024 } // 2MB limit
});
app.post("/limit-upload", uploadLimit.single("file"), (req, res) => {
res.json({ message: "File uploaded within size limit!" });
});
৬. Multer Error Handling
app.use((err, req, res, next) => {
if (err instanceof multer.MulterError) {
res.status(400).json({ error: err.message });
} else {
res.status(500).json({ error: err.message });
}
});
এই middleware টি অবশ্যই route গুলোর শেষে রাখতে হবে।
৭. Recommended Folder Structure
project/ │── uploads/ # Uploaded files │── src/ │ │── routes/ │ │── controllers/ │ │── middleware/ │ │── config/ │── app.js │── package.json
৮. Best Practices for File Upload
- Image upload করার আগে Image type অবশ্যই validate করুন
- Uploaded ফাইল public folder-এর বাইরে রাখা নিরাপদ
- Large file upload allow না করা ভালো
- Image compression ব্যবহার করলে storage বাঁচবে
- Cloud storage (AWS S3, Cloudinary) ব্যবহার করা উত্তম
উপসংহার
Multer হলো Express.js-এ ফাইল আপলোড করার সবচেয়ে সহজ ও জনপ্রিয় উপায়। Single, multiple, image validation, size limit—সবকিছুই খুব সহজে কনফিগার করা যায়। Web application বা admin panel-এ file upload প্রয়োজন হলে Multer হলো perfect choice।
লোড হচ্ছে...
1. Multer কী এবং কেন ব্যবহার করা হয়?
Multer Express এর middleware যা file upload handle করার জন্য ব্যবহৃত হয়।
2. Multer দিয়ে ফাইল আপলোড করার সময় কী বিষয়ে সতর্ক থাকতে হয়?
File size limit, file type validation এবং storage path সঠিকভাবে কনফিগার করা জরুরি।