KoaJS একটি অত্যন্ত লঘু ও কাস্টমাইজযোগ্য ওয়েব ফ্রেমওয়ার্ক, এবং এতে ফাইল আপলোড পরিচালনা করার জন্য সাধারণত koa-multer প্যাকেজটি ব্যবহৃত হয়। koa-multer হলো KoaJS এর জন্য একটি মিডলওয়্যার যা ফাইল আপলোডের কাজ সহজ করে তোলে। এটি multer প্যাকেজের KoaJS-এর জন্য তৈরি করা সংস্করণ, যা মূলত ফাইল আপলোডের সময় ফাইলগুলি প্রসেস ও স্টোর করার জন্য ব্যবহৃত হয়।
এখানে আমরা দেখব কিভাবে koa-multer ব্যবহার করে ফাইল আপলোড করা যায়।
koa-multer ইনস্টল করা
প্রথমে আপনাকে koa-multer প্যাকেজটি ইনস্টল করতে হবে। এটি multer এর KoaJS-এর জন্য তৈরি করা সংস্করণ।
npm install koa-multer
koa-multer দিয়ে ফাইল আপলোড করার প্রাথমিক উদাহরণ
ধরা যাক, আপনি একটি API তৈরি করতে চান যেখানে ব্যবহারকারীরা তাদের ফাইল আপলোড করতে পারবেন। আমরা এখানে একটি ফাইল আপলোডের প্রাথমিক উদাহরণ দেখাবো।
১. koa-multer মিডলওয়্যার কনফিগার করা
প্রথমে koa-multer কে আপনার অ্যাপ্লিকেশনে ইমপোর্ট করুন এবং কনফিগার করুন।
const Koa = require('koa');
const Router = require('koa-router');
const multer = require('koa-multer');
const path = require('path');
// Koa অ্যাপ্লিকেশন এবং রাউটার তৈরি
const app = new Koa();
const router = new Router();
// Multer কনফিগারেশন
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, './uploads'); // ফাইল কোথায় সেভ হবে
},
filename: (req, file, cb) => {
cb(null, Date.now() + path.extname(file.originalname)); // ফাইলের নাম কাস্টমাইজ করা
},
});
// Multer মিডলওয়্যার তৈরি করা
const upload = multer({ storage: storage });
// রাউট তৈরি
router.post('/upload', upload.single('file'), async (ctx) => {
// ফাইল আপলোড করা হলে রেসপন্স
if (ctx.file) {
ctx.body = {
message: 'File uploaded successfully!',
file: ctx.file,
};
} else {
ctx.status = 400;
ctx.body = 'No file uploaded!';
}
});
// রাউটার কনফিগার করা
app.use(router.routes()).use(router.allowedMethods());
// অ্যাপ্লিকেশন চালু করা
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
এখানে কী হচ্ছে:
multer.diskStorage(): এটি ফাইলের সঞ্চয়ের জায়গা এবং ফাইলের নাম কাস্টমাইজ করে।destination: এটি ফাইলটি কোথায় সংরক্ষণ করা হবে তা নির্ধারণ করে (এই উদাহরণে,./uploadsফোল্ডারে)।filename: এটি ফাইলের নাম কাস্টমাইজ করে, যাতে ফাইলটির নাম ফাইল আপলোডের সময় ডেটাইম স্ট্যাম্প সহ থাকে।
upload.single('file'): এটি একটি ফাইল আপলোডের জন্য ব্যবহৃত হয় এবংfileহল HTML ফর্মের ইনপুট ফিল্ডের নাম।ctx.file: এই প্রপার্টি দিয়ে আপনি আপলোড করা ফাইলের তথ্য অ্যাক্সেস করতে পারবেন।
HTML ফর্মের মাধ্যমে ফাইল আপলোড
এখন, আপনি একটি HTML ফর্ম তৈরি করতে পারেন যা ফাইল আপলোড করবে। উদাহরণস্বরূপ:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>File Upload</title>
</head>
<body>
<h1>Upload a File</h1>
<form action="http://localhost:3000/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="file" required />
<button type="submit">Upload</button>
</form>
</body>
</html>
এই ফর্মের মাধ্যমে আপনি ফাইলটি /upload রাউটে POST রিকোয়েস্ট পাঠাতে পারবেন। ফাইল আপলোডের পর আপনি সফল মেসেজ সহ ফাইলের তথ্য পাবেন।
আপলোড ফোল্ডার তৈরি করা
যেহেতু ফাইলগুলি ./uploads ফোল্ডারে সেভ করা হচ্ছে, তাই নিশ্চিত করুন যে আপনার প্রকল্পে একটি uploads ফোল্ডার আছে। যদি না থাকে, তাহলে এটি তৈরি করুন:
mkdir uploads
ফাইল আপলোডের সফল রেসপন্স
যখন আপনি ফাইল সফলভাবে আপলোড করবেন, তখন KoaJS অ্যাপ্লিকেশন আপনাকে একটি JSON রেসপন্স দেবে, যেমন:
{
"message": "File uploaded successfully!",
"file": {
"fieldname": "file",
"originalname": "example.jpg",
"encoding": "7bit",
"mimetype": "image/jpeg",
"destination": "./uploads",
"filename": "1633038012345.jpg",
"path": "uploads/1633038012345.jpg",
"size": 1024
}
}
ফাইল আপলোডের ত্রুটি হ্যান্ডলিং
যদি ফাইলের সাইজ বেশি হয় বা অন্য কোনো সমস্যা ঘটে, তবে আপনি multer এর মাধ্যমে ত্রুটি হ্যান্ডলিংও কনফিগার করতে পারেন। উদাহরণস্বরূপ, ফাইল সাইজ সীমাবদ্ধ করা:
const upload = multer({
storage: storage,
limits: { fileSize: 5 * 1024 * 1024 }, // 5MB ফাইল সাইজ সীমা
});
router.post('/upload', upload.single('file'), async (ctx) => {
if (ctx.file) {
ctx.body = {
message: 'File uploaded successfully!',
file: ctx.file,
};
} else {
ctx.status = 400;
ctx.body = 'File size is too large!';
}
});
এটি 5MB এর বেশি সাইজের ফাইল আপলোড করা থেকে রোধ করবে।
সারাংশ
KoaJS-এ koa-multer ব্যবহার করে আপনি খুব সহজে ফাইল আপলোড পরিচালনা করতে পারেন। koa-multer কনফিগার করে আপনি ফাইল আপলোডের গন্তব্য, নাম, সাইজ সীমা ইত্যাদি কাস্টমাইজ করতে পারেন। এর মাধ্যমে আপনি ফাইল আপলোডের একটি শক্তিশালী এবং কাস্টমাইজযোগ্য সিস্টেম তৈরি করতে পারবেন।
Read more