ก่อนอื่นเราจะส่งไฟล์เข้าเครื่องเซิร์ฟเวอร์ต้องแก้ฟอร์มโดยเพิ่ม enctype=”multipart/form-data” และส่งไฟล์โดยใช้อินพุทชนิดไฟล์
1 2 3 | < form action = "uploading.php" method = "post" enctype = "multipart/form-data" > < br />< input type = "file" name = "picture" /> </ form > |
ในการรับค่าพีเอชพีจะใช้ตัวแปร $_FILES ถ้าอินพุทชื่อ picture ก็จะใช้ $_FILES[‘picture’] โดยจะมีสมาชิกหลายตัว
$_FILES[‘pictures’][‘tmp_name’] | จะบอกว่าไฟล์ของเราตอนนี้เก็บในชื่ออะไร (เพื่อความปลอดภัยพีเอชพี จะเก็บเป็นไฟล์ชั่วคราวไว้ก่อน ป้องกันการอัพโหลดไฟล์ไวรัสเข้าเซิร์ฟเวอร์ ถ้าไม่ทำอะไรกับไฟล์นี่ตามเวลาที่กำหนดจะโดนลบออกไปเอง) | $_FILES[‘picture’][‘name’] | จะบอกว่าต้นฉบับชื่ออะไรนามสกุล | $_FILES[‘picture’][‘type’] | ประเภทของไฟล์ตามมาตรฐาน MIME ไว้ดูว่าจริงๆ ไฟล์นี้เป็นไฟล์อะไร (ปลอกภัยกว่าตรวจชนิดจากนามสกุล) | $_FILES[‘picture’][‘size’] | ขนาดไฟล์ | $_FILES[‘picture’][‘error’] | error ดูว่าอัพโหลดผิดพลาดรึเปล่า |
จากนั้นก็เขียนไฟล์ที่ได้มาโดยใช้ฟังก์ชัน move_uploaded_file(ไฟล์ชั่วคราว ,พาร์ท/ชื่อไฟล์/นามสกุลที่ต้องการ);ไฟล์ uploading.php
1 2 3 4 | if (isset( $_FILES [ 'picture' ])) { // ตรวจดูก่อนว่าอัพโหลดไฟล์เข้ามาจริงๆ move_uploaded_file( $_FILES [ 'picture' ][ 'name' ] , 'uploads/' . $_FILES [ 'picture' ][ 'tmp_name' ]); } |
ลองเขียนตรวจชนิดไฟล์ / จำกัดขนาดดูนะครับ
ดูเพิ่มเติม