ফাইল সংরক্ষণ এবং সার্ভার সাইডে ম্যানিপুলেশন

File Upload এবং Multer ব্যবস্থাপনা - এক্সপ্রেসজেএস (ExpressJS) - Web Development

244

ExpressJS এর মাধ্যমে আপনি সহজেই ফাইল সংরক্ষণ করতে এবং সার্ভার সাইডে ফাইল ম্যানিপুলেশন করতে পারেন। ফাইল আপলোড এবং প্রক্রিয়া করার জন্য ExpressJS সাধারণত কিছু এক্সটার্নাল মডিউল ব্যবহার করে। এখানে আমরা ফাইল আপলোড এবং সেগুলি সার্ভার সাইডে সংরক্ষণ ও ম্যানিপুলেট করার জন্য কিছু গুরুত্বপূর্ণ কৌশল আলোচনা করব।


১. ফাইল আপলোডের জন্য Multer ব্যবহার করা

ExpressJS এ ফাইল আপলোড করতে Multer একটি জনপ্রিয় মডিউল। এটি HTTP রিকোয়েস্টের মাধ্যমে ফাইল গ্রহণ করে এবং সেগুলি সার্ভারে সংরক্ষণ করে।

১.১. Multer ইনস্টল করা

প্রথমে Multer ইনস্টল করতে হবে:

npm install multer --save

১.২. Multer কনফিগারেশন

Multer ব্যবহার করার জন্য আপনাকে কিছু কনফিগারেশন সেট করতে হবে, যেমন আপলোড ফোল্ডার এবং ফাইলের সীমা। এখানে একটি উদাহরণ দেওয়া হল:

const express = require('express');
const multer = require('multer');
const path = require('path');
const app = express();
const port = 3000;

// ফাইল আপলোডের জন্য ফোল্ডার কনফিগারেশন
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, 'uploads/');  // ফাইল আপলোড হবে 'uploads' ফোল্ডারে
  },
  filename: function (req, file, cb) {
    cb(null, Date.now() + path.extname(file.originalname));  // ইউনিক ফাইল নাম সেট
  }
});

// Multer মডিউল কনফিগারেশন
const upload = multer({ storage: storage });

// ফাইল আপলোড রাউট
app.post('/upload', upload.single('file'), (req, res) => {
  if (req.file) {
    res.send('ফাইল আপলোড সফলভাবে হয়েছে!');
  } else {
    res.send('ফাইল আপলোডে ত্রুটি হয়েছে!');
  }
});

// সার্ভার চালু করুন
app.listen(port, () => {
  console.log(`Server is running at http://localhost:${port}`);
});

এখানে upload.single('file') মেথডটি file নামক ফিল্ড থেকে একক ফাইল গ্রহণ করবে এবং সেটি সার্ভারে আপলোড করবে।

১.৩. ফাইল আপলোড ফর্ম তৈরি করা

এখন আপনি একটি HTML ফর্ম তৈরি করতে পারেন যেখানে ব্যবহারকারী ফাইল আপলোড করতে পারবেন:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ফাইল আপলোড</title>
</head>
<body>
  <h1>ফাইল আপলোড করুন</h1>
  <form action="/upload" method="POST" enctype="multipart/form-data">
    <input type="file" name="file" />
    <button type="submit">আপলোড করুন</button>
  </form>
</body>
</html>

এখন, এই ফর্মের মাধ্যমে ব্যবহারকারী একটি ফাইল নির্বাচন করে সার্ভারে আপলোড করতে পারবেন।


২. ফাইল ম্যানিপুলেশন (Manipulation) করার জন্য fs মডিউল ব্যবহার করা

ExpressJS এ ফাইল সংরক্ষণ এবং ম্যানিপুলেশন করতে সাধারণত fs (File System) মডিউল ব্যবহৃত হয়, যা Node.js এর বিল্ট-ইন মডিউল। এর মাধ্যমে আপনি ফাইল তৈরি, পড়া, লেখা, ডিলিট করা এবং অন্যান্য ম্যানিপুলেশন করতে পারেন।

২.১. ফাইল তৈরি এবং লেখা

নিচের কোডটি একটি নতুন ফাইল তৈরি করবে এবং তাতে কিছু লেখা হবে:

const fs = require('fs');

// নতুন ফাইল তৈরি করে লেখা
fs.writeFile('uploads/example.txt', 'এটি একটি পরীক্ষামূলক ফাইল', (err) => {
  if (err) throw err;
  console.log('ফাইল সফলভাবে তৈরি হয়েছে!');
});

২.২. ফাইল পড়া

ফাইলের কন্টেন্ট পড়তে fs.readFile() মেথড ব্যবহার করা হয়:

fs.readFile('uploads/example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log('ফাইল কন্টেন্ট:', data);
});

২.৩. ফাইল ডিলিট করা

কোনো ফাইল ডিলিট করতে fs.unlink() মেথড ব্যবহার করতে হয়:

fs.unlink('uploads/example.txt', (err) => {
  if (err) throw err;
  console.log('ফাইলটি সফলভাবে ডিলিট হয়েছে!');
});

২.৪. ফোল্ডার তৈরি করা

নতুন ডিরেক্টরি (ফোল্ডার) তৈরি করতে fs.mkdir() মেথড ব্যবহার করা হয়:

fs.mkdir('uploads/new-folder', { recursive: true }, (err) => {
  if (err) throw err;
  console.log('নতুন ফোল্ডার তৈরি হয়েছে!');
});

৩. ফাইল আপলোডের নিরাপত্তা

ফাইল আপলোড করার সময় কিছু নিরাপত্তা সংক্রান্ত বিষয় মাথায় রাখা উচিত, যেমন:

৩.১. ফাইল টাইপ চেক করা

ফাইলের MIME টাইপ যাচাই করা উচিত, যাতে খারাপ বা অনুপযুক্ত ফাইল আপলোড করা না যায়:

const allowedTypes = ['image/jpeg', 'image/png', 'application/pdf'];

const fileFilter = (req, file, cb) => {
  if (allowedTypes.includes(file.mimetype)) {
    cb(null, true);
  } else {
    cb(new Error('এটি অনুমোদিত ফাইল নয়!'), false);
  }
};

const upload = multer({ storage: storage, fileFilter: fileFilter });

৩.২. ফাইল সাইজ সীমা নির্ধারণ করা

Multer এর মাধ্যমে ফাইল সাইজও সীমাবদ্ধ করা যায়। উদাহরণস্বরূপ, ফাইল সাইজ 10MB এর বেশি হতে পারবে না:

const upload = multer({
  storage: storage,
  limits: { fileSize: 10 * 1024 * 1024 }  // 10MB
});

৩.৩. ফাইল নাম ইউনিক করা

ফাইল নামগুলিকে ইউনিক (অন্য কোনো ফাইলের সাথে একই নাম না হওয়া) রাখতে path.extname() এবং Date.now() ব্যবহার করা হয়, যেমন উপরের উদাহরণে দেখানো হয়েছে।


৪. ফাইল সার্ভিং করা

ExpressJS এ আপলোড করা ফাইল সরবরাহ করতে express.static() মিডলওয়্যার ব্যবহার করা হয়। উদাহরণস্বরূপ:

app.use('/uploads', express.static('uploads'));

এখন, আপনি http://localhost:3000/uploads/yourfile.jpg দিয়ে ফাইল অ্যাক্সেস করতে পারবেন।


সারাংশ

ExpressJS-এ ফাইল সংরক্ষণ এবং সার্ভার সাইডে ম্যানিপুলেশন খুবই সহজ। Multer মডিউল ব্যবহার করে ফাইল আপলোড করা এবং fs মডিউল দিয়ে ফাইল ম্যানিপুলেশন করা সম্ভব। ফাইলের নিরাপত্তা নিশ্চিত করতে ফাইল টাইপ এবং সাইজ চেক করা গুরুত্বপূর্ণ। এছাড়া, ফাইল সার্ভিং এবং ফোল্ডার ম্যানিপুলেশনও ExpressJS এর মাধ্যমে সহজে করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...