ExpressJs

⌘K
  1. Home
  2. Docs
  3. ExpressJs
  4. multer অ্যাডভান্স middlew...
  5. install library

install library

install the necessary dependencies

First, let’s initialize a new Node.js project and install the necessary dependencies.

npm install express multer path fs

Multer স্টোরেজ কনফিগারেশন

multer একটি জনপ্রিয় Node.js মডিউল যা ফাইল আপলোড পরিচালনার জন্য ব্যবহৃত হয়। Multer স্টোরেজ কনফিগারেশন সেট করা হয় মূলত দুইটি ধাপে:

  1. Destination (গন্তব্য ডিরেক্টরি): ফাইল আপলোডের পর কোন ডিরেক্টরিতে সংরক্ষিত হবে তা নির্ধারণ করা।
  2. Filename (ফাইলের নাম): আপলোড হওয়া ফাইলের নাম কিভাবে হবে তা নির্ধারণ করা।

Multer স্টোরেজ কনফিগারেশন ফাইল

১. স্টোরেজ কনফিগারেশন (storage.js)

const multer = require('multer');
const path = require('path');

// Multer স্টোরেজ কনফিগারেশন
const storage = multer.diskStorage({
  // Destination ফাংশন গন্তব্য ডিরেক্টরি নির্ধারণ করে
  destination: (req, file, cb) => {
    // 'uploads' ডিরেক্টরিতে ফাইল সংরক্ষণ করবে
    cb(null, path.join(__dirname, '../uploads'));
  },
  // Filename ফাংশন ফাইলের নাম নির্ধারণ করে
  filename: (req, file, cb) => {
    // ফাইলের জন্য একটি ইউনিক নাম তৈরি করবে
    const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
    const ext = path.extname(file.originalname);
    cb(null, file.fieldname + '-' + uniqueSuffix + ext);
  }
});

module.exports = storage;
  • destination: একটি কলব্যাক ফাংশন যা আপলোড হওয়া ফাইল কোথায় সংরক্ষিত হবে তা নির্ধারণ করে। path.join(__dirname, '../uploads') দিয়ে আমরা ‘uploads’ ডিরেক্টরিতে ফাইল সংরক্ষণ করছি।
  • filename: একটি কলব্যাক ফাংশন যা ফাইলের নাম কিভাবে হবে তা নির্ধারণ করে। এখানে একটি ইউনিক সাফিক্স তৈরি করা হচ্ছে এবং মূল ফাইলের এক্সটেনশন যোগ করা হচ্ছে।

Multer কনফিগারেশন (বেসিক কনফিগারেশন)

এরপর, আমরা একটি বেসিক Multer কনফিগারেশন তৈরি করব যেখানে কেবল স্টোরেজ কনফিগারেশন ব্যবহার করা হবে।

uploadMiddleware.js

const multer = require('multer');
const storage = require('./storage');

// Multer কনফিগারেশন
const upload = multer({
  storage: storage, // পূর্বের স্টোরেজ কনফিগারেশন ব্যবহার করা হচ্ছে
});

module.exports = upload;

এখন, আমরা একটি Express অ্যাপ্লিকেশন তৈরি করব এবং Multer মিডলওয়্যার ব্যবহার করে ফাইল আপলোড করার রুট যোগ করব।

index.js
const express = require('express');
const upload = require('./uploadMiddleware'); // Multer মিডলওয়্যার আমদানি

const app = express();
const port = 3000;

// একক ফাইল আপলোড করার রুট
app.post('/upload-single', upload.single('singleFile'), (req, res) => {
  // 'singleFile' হলো ফাইলের ফিল্ডনেম যা ক্লায়েন্ট থেকে পাঠানো হয়
  res.status(200).json({
    message: 'File uploaded successfully!',
    file: req.file, // আপলোড হওয়া ফাইলের তথ্য
  });
});

// একাধিক ফাইল আপলোড করার রুট
app.post('/upload-multiple', upload.array('multipleFiles', 5), (req, res) => {
  // 'multipleFiles' হলো ফাইলের ফিল্ডনেম যা ক্লায়েন্ট থেকে পাঠানো হয়
  res.status(200).json({
    message: 'Files uploaded successfully!',
    files: req.files, // আপলোড হওয়া ফাইলগুলির তথ্য
  });
});

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

ব্যাখ্যা:

  • upload.single('singleFile'): একক ফাইল আপলোড করার জন্য মিডলওয়্যার। এখানে 'singleFile' হলো ফাইল ফিল্ডের নাম যা ক্লায়েন্ট থেকে পাঠানো হয়।
  • upload.array('multipleFiles', 5): একাধিক ফাইল আপলোড করার জন্য মিডলওয়্যার। এখানে 'multipleFiles' হলো ফাইল ফিল্ডের নাম এবং ৫ হলো সর্বাধিক ফাইল সংখ্যা।

2. ফাইল আপলোডের জন্য HTTP রিকুয়েস্ট পাঠানো

আপনার Express সার্ভার চলমান থাকলে, আপনি ফাইল আপলোড করার জন্য curl, Postman, বা অন্য কোনো HTTP ক্লায়েন্ট ব্যবহার করতে পারেন। উদাহরণস্বরূপ, Postman ব্যবহার করে আপনি নিম্নলিখিতভাবে রিকুয়েস্ট পাঠাতে পারেন:

একক ফাইল আপলোড:

  • Method: POST
  • URL: http://localhost:3000/upload-single
  • Body:form-data
    • Key: singleFile
    • Value: [আপনার আপলোড করতে চাওয়া ফাইল]

একাধিক ফাইল আপলোড:

  • Method: POST
  • URL: http://localhost:3000/upload-multiple
  • Body:form-data
    • Key: multipleFiles (এটি একটি Array)
    • Value: [আপনার আপলোড করতে চাওয়া একাধিক ফাইল]

3. ফাইল সংরক্ষণ এবং পরীক্ষা

আপনার কোড কাজ করার পরে, ফাইলগুলো uploads ডিরেক্টরিতে সংরক্ষিত হবে। নিশ্চিত করুন যে uploads ডিরেক্টরি আগে থেকেই উপস্থিত আছে অথবা Multer আপনার জন্য এটি তৈরি করবে।

How can we help?