plane-tail$_FILES

อมรรัตน์ พันธ์เลิศ 630710687

ตัวแปร $_FILES เป็นหนึ่งใน Superglobal ของ PHP สามารถใช้งานใน script ได้ทุกส่วน ตัวแปร$_FILES เป็น Aarry แบบเชื่อมโยง (associative array) ที่เก็บข้อมูลเกี่ยวกับไฟล์ที่อัพโหลดผ่าน HTTP และ POST

มาทำความรู้จักกับ $_FILES กันค่ะ

การอัพโหลดไฟล์จะเกิดขึ้นก็ต่อเมื่อฟอร์ม HTML มีองค์ประกอบ input ที่มีชนิดเป็น file และมีแอตทริบิวต์ enctype ตั้งเป็น multipart/form-data พร้อมกับตั้งแอตทริบิวต์ method ให้เป็น POST

$_FILES['file'] คือ array ที่ประกอบด้วยข้อมูลต่าง ๆ ของไฟล์ที่ถูกอัพโหลด โดยแต่ละคีย์ (key) ใน array จะเก็บข้อมูลเกี่ยวกับไฟล์ ดังนี้:

  • $_FILES['file']['name'] − ชื่อไฟล์ต้นฉบับที่ผู้ใช้เลือกอัพโหลด

  • $_FILES['file']['type'] − ประเภท MIME ของไฟล์ (เช่น "image/gif") อย่างไรก็ตาม ประเภท MIME นี้จะไม่ได้ถูกตรวจสอบจากฝั่ง PHP

  • $_FILES['file']['size'] − ขนาดของไฟล์ที่อัพโหลดในหน่วยไบต์

  • $_FILES['file']['tmp_name'] − ชื่อไฟล์ชั่วคราวที่ไฟล์ที่อัพโหลดถูกเก็บไว้บนเซิร์ฟเวอร์

  • $_FILES['file']['full_path'] − เส้นทางเต็มของไฟล์ตามที่ส่งมาจากเบราว์เซอร์ (เริ่มใช้ใน PHP 8.1.0)

  • $_FILES['file']['error'] − รหัสข้อผิดพลาดที่เกี่ยวข้องกับการอัพโหลดไฟล์นี้

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

ในส่วนของ PHP รหัสข้อผิดพลาดที่จะเกิดขึ้นระหว่างการอัพโหลดไฟล์ ($_FILES['file']['error']) จะถูกกำหนดดังนี้

รหัสข้อผิดพลาด
คำอธิบาย

UPLOAD_ERR_OK (ค่า=0)

ไม่มีข้อผิดพลาด ไฟล์อัพโหลดสำเร็จ

UPLOAD_ERR_INI_SIZE (ค่า=1)

ไฟล์ที่อัพโหลดมีขนาดเกินค่าที่กำหนดใน upload_max_filesize ในไฟล์ php.ini

UPLOAD_ERR_FORM_SIZE (ค่า=2)

ไฟล์ที่อัพโหลดมีขนาดเกินค่าที่กำหนดใน MAX_FILE_SIZE ในฟอร์ม HTML

UPLOAD_ERR_PARTIAL (ค่า=3)

ไฟล์ถูกอัพโหลดเพียงบางส่วนเท่านั้น

UPLOAD_ERR_NO_FILE (ค่า=4)

ไม่มีไฟล์ใดถูกอัพโหลด

UPLOAD_ERR_NO_TMP_DIR (ค่า=6)

ไม่มีโฟลเดอร์ชั่วคราวสำหรับจัดเก็บไฟล์ที่อัพโหลด

UPLOAD_ERR_CANT_WRITE (ค่า=7)

ล้มเหลวในการเขียนไฟล์ลงดิสก์

UPLOAD_ERR_EXTENSION (ค่า=8)

ส่วนขยาย (extension) ของ PHP หยุดการอัพโหลดไฟล์

เปรียบเทียบภาษา PHP และ Javascript ของ $_FILES

ในส่วนของ code

output

สรุปของตัวแปร $_FILES

  • PHP นั้นเป็นการทำงานในแบบฝั่ง Server-side จะมีตัวแปร $_FILES ที่ใช้เพื่อจัดเก็บไฟล์ที่ถูกอัพโหลดผ่านฟอร์มในwebsite โดยฟอร์มนั้นจะต้องมีการตั้งค่า enctype เป็น multipart/form-data เพื่อสามารถที่จะอัพโหลดไฟล์ได้

  • Javascript นั้นเป็นการทำงานในแบบฝั่ง Client-side จะไม่มีตัวแปร $_FILES เหมือนกับ PHP แต่ Javascript สามารถเข้าถึงข้อมูลของไฟล์ที่ถูกเลือกผ่านการใช้งาน File API ซึ่งจะทำให้สามารถตรวจสอบ ชื่อไฟล์ ประเภทไฟล์ เป็นต้น

Slide

file-download
373KB

อ้างอิง

Last updated