পিএইচপি ৫ ফাইল আপ্লোড (PHP 5 File Upload)

Sheikh Mahfuzur Rahman

 

পিএইচপি'র সাহায্যে খুব সহজেই সার্ভারে ফাইল আপলোড করা যায়। যাহোক, সহজ হওয়ার কারণে বিপদও বেশি হতে পারে! তাই সার্ভারে ফাইল আপলোডের সুযোগ দেয়ার সময় সতর্ক হোন!

 

"php.ini” ফাইল কনফিগার করা

প্রথমে, ফাইল আপলোড করার জন্য পিএইচপি কনফিগার করা হয়েছে কিনা তা নিশ্চিত করতে হবে। আপনার "php.ini” ফাইলে file_uploads ডিরেক্টিভকে খুঁজে বের করুন এবং এটিকে সচল (On) করুনঃ


file_uploads = On

 

এইচটিএমএল ফর্ম তৈরি করা

তারপর একটি এইচটিএমএল ফর্ম তৈরি করুন যা ইউজারদেরকে ইমেজ ফাইল সিলেক্ট করে আপলোড করার সুযোগ করে দেয়:


<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
 Select image to upload:
 <input type="file" name="fileToUpload" id="fileToUpload">
 <input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>

 

উপরের ফর্মটি তৈরি করার সময় নিচের নিয়মগুলো অনুসরন করুন

  • ফর্মটি যেন method="post" কে ব্যবহার করে তা নিশ্চিত করতে হবে।
  • ফর্মটির উল্লেখিত এট্রিবিউটগুলোরও প্রয়োজন পড়বেঃ enctype="multipart/form-data"। ফর্মটি সাবমিট করার সময় কোন কনটেন্ট-টাইপ ব্যবহার করতে হবে তা এটা ঠিক করে দেয়।

উপরের উপকরণগুলো ছাড়া ফাইল আপলোড হবেনা।

 

অন্যান্য যেসব দিকে খেয়াল রাখতে হবে

<input> ট্যাগের type="file" এট্রিবিউট ইনপুট-ফিল্ডকে, ইনপুট-কন্ট্রোল এর পাশে একটি "Browse" বাটনসহ, একটি ফাইল-সিলেক্ট কন্ট্রোল হিসেবে দেখায়।

উপরের ফর্মটি "upload.php" নামক ফাইলের কাছে, যা আমরা এরপর তৈরি করবো, ডাটা পাঠায়।

 

আপলোড ফাইল পিএইচপি স্ক্রিপ্ট তৈরি করা

"upload.php" ফাইলটি ফাইল আপলোডের কোড ধারণ করেঃ


<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
     $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
     if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
     } else {
        echo "File is not an image.";
        $uploadOk = 0;
     }
}
?>

উপরের পিএইচপি স্ক্রিপ্টটির ব্যাখ্যা

  • $target_dir = "uploads/" - ফাইলটি কোন ডিরেক্টরিতে রাখা হবে তা ঠিক করে
  • $target_file - ফাইলটি আপলোড করার পাথ নির্ধারণ করে
  • $uploadOk=1 - এটি এখনো ব্যবহার করা হয়নি (পরবর্তীতে ব্যবহার করা হবে)
  • $imageFileType - এটি ফাইলের ফাইল এক্সটেনশন ধারণ করে

এরপর স্ক্রিপ্টটি চেক করে দেখে যে ইমেজ ফাইলটি সত্যিকার ইমেজ ফাইল কিনা।

লক্ষ্যণীয়ঃ আপনাকে '"upload.php" ফাইলটি যে ডিরেক্টরিতে আছে সেখানে "uploads" নামের ডিরেক্টরি তৈরি করতে হবে। আপলোড করা ফাইলগুলো সেখানে সেভ হবে।

 

কোন ফাইল ইতোমধ্যেই আছে কিনা চেক করা

এখন আমরা কিছু সীমাবদ্ধতা আরোপ করবো।

প্রথমেই, আমরা চেক করবো ফাইলটি এর মধ্যেই '"uploads" ফোল্ডারে আছে কিনা। যদি সেটি থাকে তাহলে একটি এরর মেসেজ দেখায় এবং $uploadOk শূন্যতে সেট হয়ঃ


// Check if file already exists
 if (file_exists($target_file)) {
     echo "Sorry, file already exists.";
     $uploadOk = 0;
 }

 

ফাইল সাইজ লিমিট করা

আমাদের এইচটিএমএল ফর্মের ইনপুট ফিল্ডটির নাম "fileToUpload"
এখন আমাদের ফাইলের সাইজ ঠিক করতে চাই। যদি ফাইলটি ৫০০কিলোবাইটের চেয়ে বড় হয় তাহলে একটি এরর মেসেজ দেখায় এবং $uploadOk শূন্যতে সেট হয়ঃ


 // Check file size
 if ($_FILES["fileToUpload"]["size"] > 500000) {
     echo "Sorry, your file is too large.";
     $uploadOk = 0;
 }

 

ফাইল টাইপ সীমিত করা

নিচের কোডটি শুধুমাত্র ইউজারদের JPG, JPEG, PNG, এবং GIF ফাইল আপলোড করতে দেয়। অন্য ধরণের ফাইল টাইপগুলো একটি এরর মেসেজ দেখায় এবং $uploadOk শূন্যতে সেট করেঃ


// Allow certain file formats
 if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
 && $imageFileType != "gif" ) {
     echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
     $uploadOk = 0;
 }

 

আপলোড ফাইলের পিএইচপি স্ক্রিপ্ট সম্পূর্ণ করা

সম্পূর্ণ "upload.php" ফাইলটি ঠিক এমন দেখাবেঃ


<?php
 $target_dir = "uploads/";
 $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
 $uploadOk = 1;
 $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
 // Check if image file is a actual image or fake image
 if(isset($_POST["submit"])) {
     $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
     if($check !== false) {
         echo "File is an image - " . $check["mime"] . ".";
         $uploadOk = 1;
     } else {
         echo "File is not an image.";
         $uploadOk = 0;
     }
 }
 // Check if file already exists
 if (file_exists($target_file)) {
     echo "Sorry, file already exists.";
     $uploadOk = 0;
 }
 // Check file size
 if ($_FILES["fileToUpload"]["size"] > 500000) {
     echo "Sorry, your file is too large.";
     $uploadOk = 0;
 }
 // Allow certain file formats
 if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
 && $imageFileType != "gif" ) {
     echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
     $uploadOk = 0;
 }
 // Check if $uploadOk is set to 0 by an error
 if ($uploadOk == 0) {
     echo "Sorry, your file was not uploaded.";
 // if everything is ok, try to upload file
 } else {
     if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
         echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
     } else {
         echo "Sorry, there was an error uploading your file.";
     }
 }
 ?>

 

পিএইচপি'র ফাইল সিস্টেম ফাংশনগুলোর পূর্ন রেফারেন্সের জন্য আমাদের পিএইচপি ফাইল সিস্টেম রেফারেন্সে যান।

 

Permanent link to this article: http://bangla.sitestree.com/%e0%a6%aa%e0%a6%bf%e0%a6%8f%e0%a6%87%e0%a6%9a%e0%a6%aa%e0%a6%bf-%e0%a7%ab-%e0%a6%ab%e0%a6%be%e0%a6%87%e0%a6%b2-%e0%a6%86%e0%a6%aa%e0%a7%8d%e0%a6%b2%e0%a7%8b%e0%a6%a1-php-5-file-upload/