Multiple File Upload

Web Development - এএসপি ডট (ASP.Net) - ফাইল আপলোড এবং ডাউনলোড |

ASP.Net এ একাধিক ফাইল আপলোড (Multiple File Upload) একটি সাধারণ প্রয়োজনীয়তা, যেখানে একাধিক ফাইল এক সাথে সার্ভারে আপলোড করা হয়। ASP.Net MVC বা ASP.Net Core এ ফাইল আপলোড করার জন্য ফর্ম, কন্ট্রোলার, এবং ভিউ এর মাধ্যমে কাজ করতে হয়। একাধিক ফাইল আপলোডের জন্য সাধারণত IFormFile ব্যবহৃত হয়। নিচে একাধিক ফাইল আপলোড করার প্রক্রিয়া বিস্তারিতভাবে ব্যাখ্যা করা হল।


ASP.Net MVC এ Multiple File Upload

১. Model Class তৈরি করা

প্রথমে, আমরা একটি মডেল তৈরি করি, যেখানে ফাইল গুলি আপলোড করা হবে। এখানে একটি List ব্যবহার করা হবে, যা একাধিক ফাইল সন্নিবেশিত করবে।

public class FileUploadViewModel
{
    public List<IFormFile> Files { get; set; }
}

২. View তৈরি করা

এখন, আপনাকে Razor ভিউতে একটি ফর্ম তৈরি করতে হবে, যেখানে ইউজার একাধিক ফাইল সিলেক্ট করতে পারবে। enctype="multipart/form-data" অ্যাট্রিবিউটটি ফর্মে সেট করতে হবে যাতে ফাইলগুলি সার্ভারে সঠিকভাবে আপলোড করা যায়।

@model FileUploadViewModel

<form asp-action="UploadFiles" method="post" enctype="multipart/form-data">
    <div>
        <label>Select Files</label>
        <input type="file" name="Files" multiple />
    </div>
    
    <button type="submit">Upload</button>
</form>

এখানে multiple অ্যাট্রিবিউট ব্যবহার করা হয়েছে, যা ব্যবহারকারীদের একাধিক ফাইল সিলেক্ট করার অনুমতি দেয়।

৩. Controller Action তৈরি করা

কন্ট্রোলারে একটি POST অ্যাকশন তৈরি করতে হবে যা ফাইলগুলি গ্রহণ করবে এবং সার্ভারে আপলোড করবে।

public class FileUploadController : Controller
{
    private readonly IWebHostEnvironment _environment;

    public FileUploadController(IWebHostEnvironment environment)
    {
        _environment = environment;
    }

    [HttpPost]
    public async Task<IActionResult> UploadFiles(FileUploadViewModel model)
    {
        if (model.Files != null && model.Files.Count > 0)
        {
            foreach (var file in model.Files)
            {
                if (file.Length > 0)
                {
                    var filePath = Path.Combine(_environment.WebRootPath, "uploads", file.FileName);
                    
                    // ফাইল সেভ করা
                    using (var stream = new FileStream(filePath, FileMode.Create))
                    {
                        await file.CopyToAsync(stream);
                    }
                }
            }
            return RedirectToAction("Index");
        }

        return View();
    }
}

এখানে, UploadFiles অ্যাকশনে FileUploadViewModel মডেলটি পাস করা হচ্ছে। ফাইলগুলি Files প্রপার্টির মাধ্যমে অ্যাক্সেস করা হচ্ছে এবং CopyToAsync মেথড ব্যবহার করে ফাইলগুলি সেভ করা হচ্ছে।

৪. Folder Permission

আপনি যেই ডিরেক্টরিতে ফাইলগুলো সেভ করবেন (যেমন "uploads"), সেখানে যথাযথ লেখার অনুমতি থাকতে হবে। এটি নিশ্চিত করুন, বিশেষত ডিপ্লয়মেন্টের পর সার্ভারে।


ASP.Net Core এ Multiple File Upload

ASP.Net Core এ Multiple File Upload করার প্রক্রিয়া প্রায় একই, তবে কিছু পার্থক্য থাকতে পারে। বিশেষ করে ASP.Net Core এ IFormFile ব্যবহার করা হয় এবং এখানে WebHostEnvironment ব্যবহার করে আপলোড ফোল্ডারের লোকেশন পাওয়া যায়।

১. Model Class তৈরি করা

public class FileUploadViewModel
{
    public List<IFormFile> Files { get; set; }
}

২. View তৈরি করা

@model FileUploadViewModel

<form asp-action="UploadFiles" method="post" enctype="multipart/form-data">
    <div>
        <label>Select Files</label>
        <input type="file" name="Files" multiple />
    </div>
    
    <button type="submit">Upload</button>
</form>

৩. Controller Action তৈরি করা

public class FileUploadController : Controller
{
    private readonly IWebHostEnvironment _environment;

    public FileUploadController(IWebHostEnvironment environment)
    {
        _environment = environment;
    }

    [HttpPost]
    public async Task<IActionResult> UploadFiles(FileUploadViewModel model)
    {
        if (model.Files != null && model.Files.Count > 0)
        {
            foreach (var file in model.Files)
            {
                if (file.Length > 0)
                {
                    var filePath = Path.Combine(_environment.WebRootPath, "uploads", file.FileName);

                    // ফাইল সেভ করা
                    using (var stream = new FileStream(filePath, FileMode.Create))
                    {
                        await file.CopyToAsync(stream);
                    }
                }
            }
            return RedirectToAction("Index");
        }

        return View();
    }
}

৪. Folder Permission

যেখানে ফাইল সেভ করা হবে (এখানে "uploads" ফোল্ডার), সেই ডিরেক্টরিতে লেখার অনুমতি থাকতে হবে।


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

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

  1. File Type Validation: শুধু নির্দিষ্ট ধরনের ফাইল আপলোডের অনুমতি দেওয়া উচিত (যেমন: .jpg, .png, .pdf ইত্যাদি)।
  2. File Size Limitation: বড় ফাইল আপলোড হওয়ার ঝুঁকি কমানোর জন্য একটি সর্বোচ্চ ফাইল আকার সীমা নির্ধারণ করা উচিত।
  3. Sanitize File Names: ফাইলের নাম sanitize করা উচিত যাতে কোনো অশুভ স্ক্রিপ্ট বা ম্যালওয়্যার চলে না আসে।
if (file.Length > 0 && file.ContentType == "image/jpeg") // শুধুমাত্র JPEG ফাইল আপলোড
{
    var filePath = Path.Combine(_environment.WebRootPath, "uploads", Path.GetFileName(file.FileName));
    // আরও নিরাপত্তার জন্য ফাইল নাম sanitize করতে হবে
}

সারাংশ

ASP.Net এ একাধিক ফাইল আপলোড করা একটি সাধারণ প্রয়োজনীয়তা, যা IFormFile এবং Razor ভিউ এর মাধ্যমে করা হয়। Model, View, এবং Controller এর মাধ্যমে ফাইলগুলি সার্ভারে আপলোড করা সম্ভব। নিরাপত্তার জন্য ফাইলের ধরন এবং আকার যাচাই করা গুরুত্বপূর্ণ, এবং ফাইলের নামও sanitize করা উচিত।

Content added By
Promotion