FuelPHP একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা MVC (Model-View-Controller) আর্কিটেকচার ব্যবহার করে ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে সহায়তা করে। FuelPHP-তে Multiple File Upload এবং File Validation সহজে পরিচালনা করা যায়। এই ফিচারের মাধ্যমে আপনি একাধিক ফাইল আপলোড এবং তাদের ভ্যালিডেশন করতে পারেন, যা ওয়েব অ্যাপ্লিকেশনের জন্য গুরুত্বপূর্ণ।
Multiple File Upload in FuelPHP
FuelPHP ফাইল আপলোডের জন্য একটি সহজ এবং কার্যকরী API প্রদান করে। এটি Upload ক্লাসের মাধ্যমে ফাইল আপলোড করার প্রক্রিয়াকে সহজ করে তোলে।
1. FuelPHP তে Multiple File Upload প্রক্রিয়া
FuelPHP-তে একাধিক ফাইল আপলোড করতে আপনি Upload ক্লাসটি ব্যবহার করবেন। এর মাধ্যমে আপনি একাধিক ফাইল একসাথে আপলোড করতে পারবেন এবং প্রতিটি ফাইলের ভ্যালিডেশনও পরিচালনা করতে পারবেন।
Step 1: Create the Upload Form in View
প্রথমে একটি ফর্ম তৈরি করতে হবে যা ব্যবহারকারীদের ফাইল আপলোড করার অনুমতি দেবে।
// app/views/upload_form.php
<form action="/upload/submit" method="post" enctype="multipart/form-data">
<input type="file" name="files[]" multiple><br>
<input type="submit" value="Upload">
</form>
এখানে, multiple অ্যাট্রিবিউট ব্যবহার করে একাধিক ফাইল আপলোড করার অনুমতি দেওয়া হয়েছে।
Step 2: Handle Multiple File Upload in Controller
এবার কন্ট্রোলারে ফাইল আপলোডের লজিক সেটআপ করতে হবে। FuelPHP এর Upload ক্লাস ব্যবহার করে একাধিক ফাইল আপলোড করা যেতে পারে।
// app/controllers/upload.php
class Controller_Upload extends Controller
{
public function action_index()
{
return View::forge('upload_form');
}
public function action_submit()
{
// Check if files are uploaded
if (Input::file('files'))
{
// Get the files from the input
$files = Input::file('files');
$uploaded_files = [];
// Loop through the files and upload them
foreach ($files as $file)
{
// Validate the file
if ($file['error'] === UPLOAD_ERR_OK)
{
// Define upload path
$upload_path = DOCROOT . 'uploads/';
// Check if the file is valid
if (Upload::is_valid($file))
{
// Save the file
Upload::save($file, null, $upload_path);
$uploaded_files[] = $file['name']; // Store the uploaded file name
}
else
{
// Handle invalid file
echo 'Invalid file type or size';
}
}
}
// Display uploaded files
echo 'Files uploaded successfully: <br>';
echo implode('<br>', $uploaded_files);
}
else
{
echo 'No files selected for upload.';
}
}
}
এখানে:
Input::file('files')ব্যবহার করে ফাইলগুলি সংগ্রহ করা হচ্ছে।Upload::is_valid()ফাইলের ভ্যালিডেশন পরীক্ষা করছে।Upload::save()ফাইলটি সেভ করছে।
Step 3: Create an Upload Directory
আপনার ফাইলগুলো সেভ করার জন্য uploads/ নামে একটি ডিরেক্টরি তৈরি করতে হবে:
mkdir -p public/uploads
2. File Validation
ফাইল আপলোডের সময় ফাইলের সাইজ, এক্সটেনশন, এবং MIME টাইপ ভ্যালিডেট করা গুরুত্বপূর্ণ। FuelPHP এর Upload ক্লাসের মাধ্যমে আপনি এই সমস্ত ভ্যালিডেশন করতে পারবেন।
File Validation Example:
// app/controllers/upload.php
public function action_submit()
{
// Check if files are uploaded
if (Input::file('files'))
{
// Get the files from the input
$files = Input::file('files');
$uploaded_files = [];
// Loop through the files and validate/upload them
foreach ($files as $file)
{
// Check for upload errors
if ($file['error'] === UPLOAD_ERR_OK)
{
// Define allowed extensions and MIME types
$allowed_extensions = ['jpg', 'jpeg', 'png', 'gif'];
$allowed_mime_types = ['image/jpeg', 'image/png', 'image/gif'];
// Get file extension and MIME type
$extension = pathinfo($file['name'], PATHINFO_EXTENSION);
$mime_type = mime_content_type($file['tmp_name']);
// Validate the file extension and MIME type
if (in_array(strtolower($extension), $allowed_extensions) && in_array($mime_type, $allowed_mime_types))
{
// Define upload path
$upload_path = DOCROOT . 'uploads/';
// Save the file
Upload::save($file, null, $upload_path);
$uploaded_files[] = $file['name'];
}
else
{
echo 'Invalid file type for ' . $file['name'] . '<br>';
}
}
}
// Display uploaded files
echo 'Files uploaded successfully: <br>';
echo implode('<br>', $uploaded_files);
}
else
{
echo 'No files selected for upload.';
}
}
এখানে:
- Allowed file types এবং MIME types যাচাই করা হচ্ছে।
pathinfo()এবংmime_content_type()ব্যবহার করে ফাইলের এক্সটেনশন এবং MIME টাইপ যাচাই করা হচ্ছে।
3. Handling Validation Errors
আপনি যদি ফাইলের আকার, এক্সটেনশন বা অন্যান্য কন্ডিশনস সম্পর্কে ভ্যালিডেশন করতে চান, তবে FuelPHP এর Upload::get_errors() মেথডটি ব্যবহার করে আপনি সেগুলি পেতে পারেন।
if (Upload::is_valid($file))
{
Upload::save($file);
}
else
{
$errors = Upload::get_errors();
foreach ($errors as $error)
{
echo 'Error: ' . $error . '<br>';
}
}
এটি ফাইল আপলোডের সময় যে কোনো ত্রুটি সনাক্ত করে এবং ত্রুটির বার্তা প্রদর্শন করবে।
4. File Size Validation
FuelPHP ফাইলের আকার চেক করার জন্য Upload::is_valid() এর সাথে size কন্ডিশন ব্যবহার করতে পারেন।
Upload::set_max_size(5 * 1024 * 1024); // 5 MB
এটি ফাইল আপলোডের সর্বোচ্চ আকার ৫ মেগাবাইটে সীমাবদ্ধ করবে।
FuelPHP-তে Multiple File Upload এবং File Validation খুবই শক্তিশালী এবং সহজ। Upload ক্লাস ব্যবহার করে একাধিক ফাইল আপলোড করা সম্ভব এবং ফাইলের extension, MIME type, size ইত্যাদি ভ্যালিডেশন করা যায়। FuelPHP ফাইল আপলোডের নিরাপত্তা এবং কার্যকারিতা নিশ্চিত করতে শক্তিশালী validation মেকানিজম এবং error handling সিস্টেম প্রদান করে।
Read more