CodeIgniter-এ Multiple File Uploading খুবই সহজ এবং কার্যকরী। এটি ইউজারদের একাধিক ফাইল একসাথে আপলোড করার সুবিধা দেয়। CodeIgniter এর বিল্ট-ইন ফাইল আপলোড লাইব্রেরি ব্যবহার করে এটি সহজে করা যায়।
আপনার ভিউ ফাইলে একটি ফাইল আপলোড ফর্ম তৈরি করুন। এটি HTML-এর multiple
অ্যাট্রিবিউট ব্যবহার করে একাধিক ফাইল নির্বাচন করতে দেয়।
উদাহরণ:
<form action="<?= base_url('upload/multiple') ?>" method="post" enctype="multipart/form-data">
<label for="files">Choose multiple files:</label>
<input type="file" name="files[]" multiple>
<button type="submit">Upload</button>
</form>
app/Config/Routes.php
ফাইলে একটি নতুন রাউট যোগ করুন:
$routes->post('upload/multiple', 'UploadController::multiple');
একটি কন্ট্রোলার তৈরি করুন (যেমন: UploadController.php
) এবং ফাইল আপলোড লজিক যোগ করুন।
কন্ট্রোলার উদাহরণ:
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class UploadController extends Controller
{
public function multiple()
{
$files = $this->request->getFiles(); // সমস্ত ফাইল রিট্রিভ
foreach ($files['files'] as $file) {
if ($file->isValid() && !$file->hasMoved()) {
// ফাইল আপলোড করা
$file->move(WRITEPATH . 'uploads', $file->getClientName());
}
}
return "Files have been uploaded successfully!";
}
}
আপনার writable/uploads
ফোল্ডার নিশ্চিত করুন এবং সেটি রাইটেবল করুন।
Linux-এ:
chmod -R 0777 writable/uploads
আপলোড করার সময় ফাইলের ধরন বা সাইজ যাচাই করার জন্য ভ্যালিডেশন যোগ করতে পারেন।
ভ্যালিডেশন সহ কন্ট্রোলার উদাহরণ:
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class UploadController extends Controller
{
public function multiple()
{
$files = $this->request->getFiles();
$uploadedFiles = [];
foreach ($files['files'] as $file) {
if ($file->isValid() && !$file->hasMoved()) {
// ফাইল ভ্যালিডেশন
if ($file->getSize() <= 2048000 && in_array($file->getExtension(), ['jpg', 'png', 'gif'])) {
$file->move(WRITEPATH . 'uploads', $file->getClientName());
$uploadedFiles[] = $file->getClientName();
}
}
}
if (count($uploadedFiles) > 0) {
return "Uploaded Files: " . implode(', ', $uploadedFiles);
} else {
return "No valid files to upload.";
}
}
}
আপলোড হওয়া ফাইলগুলোর লিস্ট দেখাতে চাইলে, writable/uploads
ডিরেক্টরি থেকে ফাইল লিস্ট রিট্রিভ করতে পারেন।
উদাহরণ:
public function listFiles()
{
$files = array_diff(scandir(WRITEPATH . 'uploads'), ['.', '..']);
return view('file_list', ['files' => $files]);
}
মেথড/প্রপার্টি | কাজ |
---|---|
$this->request->getFiles() | সমস্ত ফাইল রিট্রিভ করে। |
$file->isValid() | ফাইলটি বৈধ কিনা যাচাই করে। |
$file->hasMoved() | ফাইলটি ইতিমধ্যে মুভ করা হয়েছে কিনা যাচাই করে। |
$file->getClientName() | ফাইলের মূল নাম রিট্রিভ করে। |
$file->getExtension() | ফাইলের এক্সটেনশন রিট্রিভ করে। |
$file->getSize() | ফাইলের সাইজ (বাইটে) রিট্রিভ করে। |
$file->move($path, $name) | নির্দিষ্ট ডিরেক্টরিতে ফাইলটি সংরক্ষণ করে। |
writable/uploads
ফোল্ডার রাইটেবল।php.ini
ফাইলে upload_max_filesize
এবং post_max_size
বাড়ান।upload_max_filesize = 5M
post_max_size = 10M
CodeIgniter-এ Multiple File Uploading প্রক্রিয়াটি সহজ এবং কার্যকর। ভ্যালিডেশন এবং কাস্টমাইজেশনের মাধ্যমে এটি আরও নিরাপদ এবং ব্যবহারবান্ধব করা যায়। এই পদ্ধতি ব্যবহার করে আপনি সহজেই ইউজারের একাধিক ফাইল আপলোডের প্রয়োজনীয়তা পূরণ করতে পারবেন।
Read more