PHP - फाइल अपलोडिंग

एक PHP स्क्रिप्ट का उपयोग HTML फॉर्म के साथ किया जा सकता है ताकि उपयोगकर्ता सर्वर पर फाइल अपलोड कर सकें। प्रारंभ में फ़ाइलों को एक अस्थायी निर्देशिका में अपलोड किया जाता है और फिर एक PHP स्क्रिप्ट द्वारा लक्ष्य गंतव्य पर स्थानांतरित किया जाता है।

में जानकारी phpinfo.php पेज अस्थायी निर्देशिका का वर्णन करता है जो फ़ाइल अपलोड के लिए उपयोग किया जाता है upload_tmp_dir और अपलोड की जा सकने वाली फ़ाइलों की अधिकतम अनुमत आकार को कहा गया है upload_max_filesize। ये पैरामीटर PHP कॉन्फ़िगरेशन फ़ाइल में सेट किए गए हैंphp.ini

फ़ाइल अपलोड करने की प्रक्रिया इन चरणों का अनुसरण करती है -

  • उपयोगकर्ता पृष्ठ को खोलता है जिसमें एक HTML फ़ाइल होती है जिसमें एक पाठ फ़ाइलें, एक ब्राउज़ बटन और एक सबमिट बटन होता है।

  • उपयोगकर्ता ब्राउज़ बटन पर क्लिक करता है और स्थानीय पीसी से अपलोड करने के लिए एक फ़ाइल का चयन करता है।

  • चयनित फ़ाइल का पूर्ण पथ दर्ज किए गए पाठ में दिखाई देता है फिर उपयोगकर्ता सबमिट बटन पर क्लिक करता है।

  • चयनित फ़ाइल सर्वर पर अस्थायी निर्देशिका में भेजी जाती है।

  • PHP स्क्रिप्ट जिसे फॉर्म की एक्शन विशेषता में हैंडलर के रूप में निर्दिष्ट किया गया था, यह जांचता है कि फाइल आ गई है और फिर फाइल को एक इच्छित डायरेक्टरी में कॉपी कर लेता है।

  • PHP स्क्रिप्ट उपयोगकर्ता को सफलता की पुष्टि करती है।

फ़ाइलों को लिखते समय हमेशा की तरह यह अस्थायी और अंतिम दोनों स्थानों के लिए आवश्यक है कि अनुमतियाँ सेट हों जो फ़ाइल लेखन को सक्षम बनाती हैं। यदि या तो पढ़ने के लिए सेट किया गया है, तो प्रक्रिया विफल हो जाएगी।

अपलोड की गई फ़ाइल एक टेक्स्ट फ़ाइल या छवि फ़ाइल या कोई दस्तावेज़ हो सकती है।

एक अपलोड फ़ॉर्म बनाना

नीचे दिया गया HTM कोड अपलोडर का रूप बनाता है। इस फॉर्म में विधि विशेषता सेट हैpost और enctype विशेषता के लिए सेट किया गया है multipart/form-data

<?php
   if(isset($_FILES['image'])){
      $errors= array();
      $file_name = $_FILES['image']['name'];
      $file_size =$_FILES['image']['size'];
      $file_tmp =$_FILES['image']['tmp_name'];
      $file_type=$_FILES['image']['type'];
      $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
      
      $extensions= array("jpeg","jpg","png");
      
      if(in_array($file_ext,$extensions)=== false){
         $errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }
      
      if($file_size > 2097152){
         $errors[]='File size must be excately 2 MB';
      }
      
      if(empty($errors)==true){
         move_uploaded_file($file_tmp,"images/".$file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>
      
      <form action="" method="POST" enctype="multipart/form-data">
         <input type="file" name="image" />
         <input type="submit"/>
      </form>
      
   </body>
</html>

यह निम्नलिखित परिणाम का उत्पादन करेगा -

अपलोड स्क्रिप्ट बनाना

एक वैश्विक PHP चर कहा जाता है $_FILES। यह वेरिएबल एक एसोसिएट डबल डाइमेंशन एरे है और अपलोड की गई फाइल से संबंधित सभी जानकारी रखता है। तो अगर अपलोड करने के फॉर्म में इनपुट के नाम की विशेषता को निर्दिष्ट मूल्य थाfile, तो PHP निम्नलिखित पाँच चर बनाएगा -

  • $_FILES['file']['tmp_name'] - वेब सर्वर पर अस्थायी निर्देशिका में अपलोड की गई फ़ाइल।

  • $_FILES['file']['name'] - अपलोड की गई फ़ाइल का वास्तविक नाम।

  • $_FILES['file']['size'] - अपलोड की गई फ़ाइल के बाइट्स में आकार।

  • $_FILES['file']['type'] - अपलोड की गई फ़ाइल का MIME प्रकार।

  • $_FILES['file']['error'] - इस फाइल के अपलोड से जुड़ा एरर कोड।

उदाहरण

नीचे दिए गए उदाहरण को अपलोड की गई छवियों की अनुमति देनी चाहिए और अपलोड की गई फ़ाइल जानकारी के रूप में वापस परिणाम देना चाहिए।

<?php
   if(isset($_FILES['image'])){
      $errors= array();
      $file_name = $_FILES['image']['name'];
      $file_size = $_FILES['image']['size'];
      $file_tmp = $_FILES['image']['tmp_name'];
      $file_type = $_FILES['image']['type'];
      $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
      
      $extensions= array("jpeg","jpg","png");
      
      if(in_array($file_ext,$extensions)=== false){
         $errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }
      
      if($file_size > 2097152) {
         $errors[]='File size must be excately 2 MB';
      }
      
      if(empty($errors)==true) {
         move_uploaded_file($file_tmp,"images/".$file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>
      
      <form action = "" method = "POST" enctype = "multipart/form-data">
         <input type = "file" name = "image" />
         <input type = "submit"/>
			
         <ul>
            <li>Sent file: <?php echo $_FILES['image']['name'];  ?>
            <li>File size: <?php echo $_FILES['image']['size'];  ?>
            <li>File type: <?php echo $_FILES['image']['type'] ?>
         </ul>
			
      </form>
      
   </body>
</html>

यह निम्नलिखित परिणाम का उत्पादन करेगा -