$_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 ซึ่งจะทำให้สามารถตรวจสอบ ชื่อไฟล์ ประเภทไฟล์ เป็นต้น
Link Video
Slide
อ้างอิง
TutorialsPoint. (n.d.). PHP - Files. TutorialsPoint. https://www.tutorialspoint.com/php-files
ScriptVerse. (n.d.). PHP superglobals. ScriptVerse. https://scriptverse.dev/tutorials/php-superglobals.html
TutorialsPoint. (n.d.). PHP - Superglobals. TutorialsPoint. https://www.tutorialspoint.com/php/php_superglobals_files.htm
PHP Tutorial. (n.d.). PHP file upload. PHP Tutorial. https://www.phptutorial.net/php-tutorial/php-file-upload/
JavaScript Tutorial. (n.d.). Fetch tracking download progress. JavaScript Tutorial. https://www.javascripttutorial.net/web-apis/fetch-tracking-download-progress/
Stack Overflow. (2011, June 1). JavaScript upload file. https://stackoverflow.com/questions/5587973/javascript-upload-file
GeeksforGeeks. (n.d.). How to upload files in JavaScript. GeeksforGeeks. https://www.geeksforgeeks.org/how-to-upload-files-in-javascript/
Last updated