สร้างระบบอัพโหลดไฟล์ PHP - File Uploading

 สำหรับบทความรู้ในวันนี้ admin ขอนำมาฝากคนที่สนใจศึกษาการเขียนโปรแกรม PHP ในการใช้งาน กับหน่วยงาน หรือองค์กร หรือโปรเจคส่งอาจารย์ 

ชุดคำสั่งการทำงานของภาษา PHP จะเรียกว่า PHP script โดยจะแทรกในคำสั่งภาษา HTML เพื่อให้ผู้ใช้งานสามารถอัพโหลดไฟล์ ขึ้นไปเก็บที่เครื่องบริการแม่ข่าย Server โดยไฟล์จะถูกเก็บไว้ที่แฟ้มชั่วคราว แล้วค่อยย้ายไปที่เก็บถาวรอีกภายหลังด้วยชุดคำสั่ง PHP 

ไฟล์ phpinfo.php จะอธิบายถึงโฟลเดอร์ชั่วคราว ที่จะใช้ในการพักไฟล์ที่อัพมาขั้นแรก upload_tem_dir และขนาดไฟล์มากสุดที่อนุญาตให้อัพได้  ด้วยคำสั่ง upload_max_filesize  ซึ่งค่ากำหนดเหล่านี่จะต้องระบุในไฟล์ php.ini 

กระบวนการทำงาน 

เริ่มจากผู้ใช้งานเปิดเพจ HTML ฟอร์มอัพโหลดไฟล์ มีกล่องข้อความ มีปุ่ม browse เข้าไปเลือกไฟล์ในเครื่อง และปุ่ม อัพโหลด 

  • ผู้ใช้งานคลิก browse เข้าไปเลือกไฟล์ในเครื่องที่ต้องการอัพโหลด เช่น .doc ,.pdf เป็นต้น 

  • เส้นทางไปยังไฟล์ที่อัพโหลดจะแสดงขึ้นมาในช่องข้อความ และคลิกปุ่ม อัพโหลด 

  • ไฟล์จะถูกส่งไปยังโฟลเดอร์ชั่วคราวบนแม่ข่าย 

  • คำสั่งการทำงานภาษา PHP Script จะเริ่มทำงาน ตามที่กำหนดในแบบฟอร์ม action และตรวจสอบการอัพไฟล์ และบันทึกลงแม่ข่ายเรียบร้อย และแสดงข้อความยืนยันการส่งไฟล์ สำเร็จ 

  • สำหรับผู้พัฒนางาน ต้องอนุญาตสิทธิการเขียนไฟล์ write ในโฟลเดอร์ชั่วคราว หรือถาวร ไม่แล้วจะทำงานไม่ได้ 

สร้างแบบฟอร์มอัพโหลดไฟล์ 

ตัวอย่างหน้า HTML สร้างหน้าอัพโหลดไฟล์ตัวอย่าง ซึ่งจะใช้วิธี Post และกำหนคำสั่งการควบคุมการทำงานด้วยชุดคำสั่งแบบ enctype (คำสั่งสำหรับเข้ารหัสไฟล์ เพื่อทำให้ไฟล์สามารถส่งผ่านฟอร์มแบบ POST ได้ 2. enctype="multipart/form-data" จะกำหนดไว้ที่แท็ก form ของ HTML และใช้งานร่วมกับ input submit.) 

ตัวอย่าง ฟอร์ม HTML

<?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>

เขียน script ภาษา PHP 

ค่าตัวแปรชนิด global เรียนว่า  $_FILES. ซึ่งจะสร้างตัวแปรที่เกี่ยวข้องในการอัพไฟล์ จำนวน 5 ตัวแปรด้วยกัน คือ 
  • $_FILES['file']['tmp_name'] −ไฟล์ที่อัพไปที่แฟ้มชั่วคราวของแม่ข่าย 

  • $_FILES['file']['name'] − ชื่อของไฟล์ที่ถูกอัพโหลด 

  • $_FILES['file']['size'] − ขนาดของไฟล์

  • $_FILES['file']['type'] −ตัวแปรระบุชนิดของไฟล์ 

  • $_FILES['file']['error'] − ค่าความผิดพลาดการทำงาน 


ตัวอย่าง script ในการอัพโหลดไฟล์ 

<?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>
แนะนำให้ลองนำไปใช้งานกับ server จำลอง เพื่อทดสอบการทำงาน และแก้ไขเพิ่มเติมตามสภาพแวดล้อมการทำงาน ใช้งานของแต่ละองค์กร หรือ หน่วยงาน 


source: https://www.tutorialspoint.com/php/php_coding_standard.htm

ไม่มีความคิดเห็น:

แสดงความคิดเห็น