อัพโหลดไฟล์ PHP
ด้วย PHP ทำให้ง่ายต่อการอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์
อย่างไรก็ตาม ด้วยความง่ายดายอาจตกอยู่ในอันตราย ดังนั้นโปรดใช้ความระมัดระวังเมื่ออนุญาตให้อัปโหลดไฟล์!
กำหนดค่าไฟล์ "php.ini"
ขั้นแรก ตรวจสอบให้แน่ใจว่าได้กำหนดค่า PHP เพื่ออนุญาตให้อัปโหลดไฟล์
ในไฟล์ "php.ini" ให้ค้นหาfile_uploads
คำสั่งและตั้งค่าเป็น On:
file_uploads = On
สร้างแบบฟอร์ม HTML
ถัดไป สร้างแบบฟอร์ม HTML ที่อนุญาตให้ผู้ใช้เลือกไฟล์รูปภาพที่ต้องการอัปโหลด:
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post"
enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
กฎบางอย่างที่ต้องปฏิบัติตามสำหรับแบบฟอร์ม HTML ด้านบน:
- ตรวจสอบให้แน่ใจว่าแบบฟอร์มใช้ method="post"
- แบบฟอร์มยังต้องการแอตทริบิวต์ต่อไปนี้: enctype="multipart/form-data" ระบุประเภทเนื้อหาที่จะใช้เมื่อส่งแบบฟอร์ม
หากไม่มีข้อกำหนดข้างต้น การอัปโหลดไฟล์จะไม่ทำงาน
สิ่งอื่น ๆ ที่ควรสังเกต:
- แอตทริบิวต์ type="file" ของแท็ก <input> แสดงฟิลด์อินพุตเป็นตัวควบคุมการเลือกไฟล์ โดยมีปุ่ม "เรียกดู" ถัดจากตัวควบคุมอินพุต
แบบฟอร์มด้านบนจะส่งข้อมูลไปยังไฟล์ชื่อ "upload.php" ซึ่งเราจะสร้างต่อไป
สร้างสคริปต์ PHP ไฟล์อัพโหลด
ไฟล์ "upload.php" มีรหัสสำหรับการอัปโหลดไฟล์:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
?>
สคริปต์ PHP อธิบาย:
- $target_dir = "uploads/" - ระบุไดเร็กทอรีที่จะวางไฟล์
- $target_file ระบุพาธของไฟล์ที่จะอัพโหลด
- $uploadOk=1 ยังไม่ได้ใช้งาน (จะใช้ในภายหลัง)
- $imageFileType มีนามสกุลไฟล์ (ตัวพิมพ์เล็ก)
- ต่อไป ให้ตรวจสอบว่าไฟล์ภาพเป็นภาพจริงหรือภาพปลอม
หมายเหตุ:คุณจะต้องสร้างไดเร็กทอรีใหม่ชื่อ "uploads" ในไดเร็กทอรีที่มีไฟล์ "upload.php" อยู่ ไฟล์ที่อัพโหลดจะถูกบันทึกไว้ที่นั่น
ตรวจสอบว่าไฟล์มีอยู่แล้ว
ตอนนี้เราเพิ่มข้อจำกัดบางอย่างได้แล้ว
ขั้นแรก เราจะตรวจสอบว่าไฟล์นั้นมีอยู่แล้วในโฟลเดอร์ "อัพโหลด" หรือไม่ ถ้าเป็นเช่นนั้น ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น และ $uploadOk ถูกตั้งค่าเป็น 0:
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
จำกัดขนาดไฟล์
ฟิลด์อินพุตไฟล์ในรูปแบบ HTML ด้านบนของเรามีชื่อว่า "fileToUpload"
ตอนนี้ เราต้องการตรวจสอบขนาดของไฟล์ หากไฟล์มีขนาดใหญ่กว่า 500KB ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น และ $uploadOk ถูกตั้งค่าเป็น 0:
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
จำกัดประเภทไฟล์
รหัสด้านล่างอนุญาตให้ผู้ใช้อัปโหลดไฟล์ JPG, JPEG, PNG และ GIF เท่านั้น ไฟล์ประเภทอื่นๆ ทั้งหมดจะแสดงข้อความแสดงข้อผิดพลาดก่อนตั้งค่า $uploadOk เป็น 0:
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
อัปโหลดไฟล์สคริปต์ PHP ให้เสร็จสมบูรณ์
ไฟล์ "upload.php" ที่สมบูรณ์ตอนนี้มีลักษณะดังนี้:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])).
" has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
อ้างอิงระบบไฟล์ PHP ที่สมบูรณ์
สำหรับการอ้างอิงที่สมบูรณ์ของฟังก์ชันระบบไฟล์ ให้ไปที่การ อ้างอิงระบบไฟล์ PHP ทั้งหมด ของ เรา