আমরা এর আগে ফাইল আপলোডের জন্য নিচের কোড ব্যবহার করেছিলাম যেখানে কোন ফোল্ডারে ফাইল আপলোড হবে তা বলে দিতে হয় এই মেথডে আরো কিছু প্যারামিটার আছে যেগুলো দিয়ে ফাইল ভ্যালিডেশন করা যায়
const multer = require('multer');
const upload = multer({
storage: storage,
});
সিঙ্গেল ফাইল ইনপুট ভ্যালিডেশন
limits : এটা দিয়ে কত mb সাইজের ফাইল আপলোড করতে পারবে তা বলে দিতে পারি।
const multer = require('multer');
const upload = multer({
storage: storage,
limits:{
fieldSize:1000000, // 1mb
},
});
fileFilter : কি ধরণের ফাইল আপলোড করতে পারবে তা বলে দিতে পারি
const multer = require('multer');
const upload = multer({
storage: storage,
fileFilter: (req, file, cb) => {
// Only allow images
const filetypes = /jpeg|jpg|png/;
if (!filetypes.test(file.mimetype)) {
cb(new Error('Only images are allowed'));
} else {
cb(null, true);
}
}
});
মাল্টিপল ফাইল ইনপুট ভ্যালিডেশন
মনে করি আমাদের দুইটি ইনপুট আছে ফাইল chose করার জন্য এখন আমরা নিচের মতো করে প্রত্যেকটির জন্য আলাদা আলাদা ভ্যালিডেশন তৈরী করবো।
const express = require('express');
const app = express();
const multer = require('multer');
const upload = multer({
storage: storage,
limits: {
fieldSize: 1000000, // 1mb
},
fileFilter: (req, file, cb) => {
// Get the name of the input field
const fieldName = file.fieldname;
// Switch on the field name to apply the appropriate filter
switch (fieldName) {
case 'profile':
// Only allow images
if (!/jpeg|jpg|png/.test(file.mimetype)) {
cb(new Error('Only images are allowed for profile'));
return;
}
break;
case 'nidpic':
// Only allow PNG files
if (!/png/.test(file.mimetype)) {
cb(new Error('Only PNG files are allowed for nidpic'));
return;
}
break;
default:
// Unknown field name
cb(new Error('Unknown field name'));
return;
}
// File is valid
cb(null, true);
},
});
app.post('/uploads', upload.fields([
{ name: 'profile', maxCount: 2 },
{ name: 'nidpic', maxCount: 1 }
]), (req, res) => {
// File uploaded successfully
res.send('File uploaded successfully');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});