PHP การอัพโหลดไฟล์
- หน้าก่อน PHP การสร้าง/เขียนแฟ้ม
- หน้าต่อไป PHP Cookies
ด้วย PHP คุณสามารถอัพโหลดไฟล์ไปยังเซิร์ฟเวอร์
สร้างแบบฟอร์มอัพโหลดไฟล์
การอนุญาตให้ผู้ใช้อัพโหลดไฟล์จากแบบฟอร์มมีประโยชน์มาก
โปรดดูแบบฟอร์ม HTML สำหรับอัพโหลดไฟล์ด้านล่างนี้:
<html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>
โปรดจำได้ข้อมูลด้านล่างของแบบฟอร์มนี้:
คุณสมบัติ enctype ของแบบฟอร์ม <form> กำหนดชนิดของการเส้นทางสำหรับประมวลผลของแบบฟอร์ม เมื่อแบบฟอร์มต้องการข้อมูลบิทริบต์ อย่างเช่น หลักข้อมูลไฟล์ ใช้ "multipart/form-data"
คุณสมบัติ type="file" ของแบบฟอร์ม <input> กำหนดว่าต้องการประมวลผลรายการเข้าข้อมูลในรูปแบบไฟล์ ตัวอย่างเช่น ขณะที่คุณรีวิวในเบราเซอร์ คุณจะเห็นปุ่มเลือกที่อยู่ข้างหลังตัวกรอง
หมายเหตุ:การอนุญาตให้ผู้ใช้ลงโหลดไฟล์เป็นการเสี่ยงความปลอดภัยอย่างมาก โปรดอนุญาตเพียงผู้ใช้ที่เชื่อถือได้เท่านั้นที่จะทำการอัพโหลดไฟล์
สร้างสคริปต์อัพโหลด
ไฟล์ "upload_file.php" มีโค้ดสำหรับอัพโหลดไฟล์:
<?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } ?>
ด้วยการใช้แบบฟอร์มตัวแปรสากล $_FILES ของ PHP คุณสามารถอัพโหลดไฟล์จากคอมพิวเตอร์ของผู้ใช้ส่งไปยังเซิร์ฟเวอร์ทางไกลได้
ตัวเลขค่าแรกคือชื่อ input ของฟอร์ม ตัวเลขที่สองเป็น "name", "type", "size", "tmp_name" หรือ "error" แบบนี้:
- $_FILES["file"]["name"] - ชื่อของไฟล์ที่อัพโหลด
- $_FILES["file"]["type"] - ชนิดของไฟล์ที่อัพโหลด
- $_FILES["file"]["size"] - ขนาดของไฟล์ที่อัพโหลด นับแบบได้บิต
- $_FILES["file"]["tmp_name"] - ชื่อสำเนาชั่วคราวของไฟล์ที่เก็บอยู่บนเซิร์ฟเวอร์
- $_FILES["file"]["error"] - รหัสข้อผิดพลาดที่เกิดจากการอัพโหลดไฟล์
นี่คือวิธีการอัพโหลดไฟล์ที่ง่ายที่สุด. สำหรับการพิจารณาความปลอดภัย คุณควรเพิ่มข้อจำกัดเกี่ยวกับใครที่มีสิทธิ์ที่จะอัพโหลดไฟล์.
ข้อจำกัดการอัพโหลด
ในสคริปต์นี้ เราเพิ่มข้อจำกัดการอัพโหลดไฟล์. ผู้ใช้สามารถอัพโหลดไฟล์ .gif หรือ .jpeg เท่านั้น ขนาดไฟล์ต้องต่ำกว่า 20 kb:
<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } } else { echo "Invalid file"; } ?>
หมายเหตุ:สำหรับ IE การระบุชนิดไฟล์ jpg ต้องเป็น pjpeg สำหรับ FireFox ต้องเป็น jpeg。
บันทึกไฟล์ที่อัพโหลด
ตัวอย่างดังกล่าวสร้างสำเนาชั่วคราวของไฟล์ที่อัพโหลดในโฟลเดอร์ชั่วคราวของ PHP บนเซิร์ฟเวอร์:
ซับไฟล์การคัดลอกชั่วคราวนี้จะหายไปเมื่อสคริปต์จบลง. ถ้าต้องการบันทึกไฟล์ที่อัพโหลด ต้องการคัดลอกมันไปยังสถานที่อื่น:
<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?>
สคริปต์ด้านบนตรวจสอบว่าแฟ้มนี้มีอยู่หรือไม่ ถ้าไม่มี จะคัดลอกแฟ้มไปยังโฟลเดอร์ที่กำหนด
หมายเหตุ:ตัวอย่างนี้ได้บันทึกแฟ้มไว้ในโฟลเดอร์ใหม่ที่มีชื่อว่า "upload"
- หน้าก่อน PHP การสร้าง/เขียนแฟ้ม
- หน้าต่อไป PHP Cookies