MERN

⌘K
  1. Home
  2. Docs
  3. MERN
  4. Express.js
  5. সার্ভার সাইড ফাইল ভ্যালিডেশন

সার্ভার সাইড ফাইল ভ্যালিডেশন

আমরা এর আগে ফাইল আপলোডের জন্য নিচের কোড ব্যবহার করেছিলাম যেখানে কোন ফোল্ডারে ফাইল আপলোড হবে তা বলে দিতে হয় এই মেথডে আরো কিছু প্যারামিটার আছে যেগুলো দিয়ে ফাইল ভ্যালিডেশন করা যায়

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');
});

How can we help?