Devdit
 

วิธีเขียน PHP อัปโหลดไฟล์ Realtime

1.4K

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

 

ตัวอย่าง PHP อัปโหลดไฟล์ Realtime

1. เริ่มจากสร้างฟอร์มอัปโหลดด้วยภาษา HTML ประกอบด้วยปุ่มเลือกไฟล์ (input file), ปุ่มอัปโหลด (input button) และแทบรอโหลด (progress)

<div>
    <input type="file" name="file" id="file">
    <div>
      <input type="button" value="Upload" onclick="uploadFile()">
      <progress id="progressBar" value="0" max="100"></progress>
    </div>
</div>

เมื่อผู้ใช้งานสามารถกดเลือกไฟล์ หรือรูปภาพจากปุ่ม โปรแกรมจะเรียกใช้ฟังก์ชัน uploadFile ที่ JavaScript

 

2. เขียนโค้ด javascript อัปโหลดไฟล์ Realtime ด้วยภาษา JavaScript

<script>
  function uploadFile(){
    var file = document.getElementById("file").files[0];
    
    var formdata = new FormData();
    formdata.append("file", file);
    
    var ajax = new XMLHttpRequest();
    ajax.upload.addEventListener("progress", progressHandler, false);
    ajax.open("POST", "upload.php");
    ajax.send(formdata);
  }

  function progressHandler(event){
    document.getElementById("progressBar").value = (event.loaded / event.total) * 100;
  }    
</script>

โค้ดนี้ประกอบด้วย 2 ฟังก์ชันทำหน้าที่ดังนี้

2.1. uploadFile คือฟังก์ชันเมื่อผู้ใช้งานกดเลือกไฟล์ การทำงานคือจะดึงข้อมูลของไฟล์ที่เลือกเก็บไว้ที่ตัวแปร formdata จากนั้นใช้คำสั่ง ajax เพื่อส่งข้อมูลแบบ POST ไปที่ไฟล์ upload.php พร้อมแสดงแทบการรออัปโหลดด้วย progress โดยเรียกใช้ฟังก์ชันที่ 2 คือ progressHandler

2.2. progressHandler คือฟังก์ชันที่จะอ้างถึง element id เท่ากับ progressBar และกำหนดแทบการรออัปโหลดไฟล์

 

3. สร้างไฟล์ PHP เพื่อทำหน้าที่อัปโหลดไฟล์ที่ผู้ใช้งานเลือกไปเก็บไว้ใน Server

<?php
    if(isset($_FILES['file'])){
        $file_name = $_FILES['file']['name'];
        $file_tmp = $_FILES['file']['tmp_name'];
        move_uploaded_file( $file_tmp, "images/".$file_name );
    }
?>

อย่างแรกให้สร้าง folder ชื่อ images เพื่อรองรับการอัปโหลดไฟล์ก่อน โดยโค้ดนี้จะรับไฟล์ภาพด้วย $_FILES['file'] โดยดึง tmp_name และ name ออกมาเพื่อใช้สำหรับการอัปโหลดไฟล์ร่วมกับคำสั่ง move_uploaded_file กรณีโปรแกรมทำงานได้ถูกต้องเมื่ออัปโหลดไฟล์แล้ว จะพบว่ามีไฟล์ดังกล่าวอยู่ใน folder ที่ชื่อ images

 

สรุป การอัปโหลดไฟล์แบบ Realtime ในบทความนี้มีการใช้ 3 ภาษาคือ HTML สำหรับสร้างฟอร์ม, JavaScript สำหรับดึงข้อมูลไฟล์ และส่งต่อไปให้ PHP พร้อมกับแสดงแทบการรออัปโหลด และภาษาสุดท้ายคือ PHP สำหรับอัปโหลดไฟล์เข้า Server ใน folder ที่กำหนดไว้

แก้ไข 1 ปีที่แล้ว
ชอบ
ลิ้งก์
แชร์
Devdit มีช่อง YouTube แล้ว
เราสร้างวิดีโอเกี่ยวกับเทคโนโลยี ทำตามง่ายๆ