การสร้างแบบฟอร์มส่งไฟล์
เราจะสร้างแบบฟอร์ม 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>
|
|
จากแบบฟอร์ม HTML ข้างบนนี้อธิบายได้ว่า:
|
| แท็ก form ต้องใส่ enctype = "multipart/form-data" เพื่ออัพโหลดข้อมูลเป็นแบบไบนารี่ (binary) |
|
| แท็ก input ต้องเลือก type = "file" เพราะจะมีปุ่มให้ browse file ได้ |
|
| Note: การปล่อยให้ใครก็ตามสามารถอัพโหลดไฟล์ได้เป็นความเสี่ยงในด้านความปลอดภัยอย่างมาก ดังนั้นควรอนุญาติให้คนที่ไว้ใจได้เท่านั้นทำการอัพโหลดไฟล์ |
|
การสร้างสคริปต์อัพโหลด
ไฟล์ชื่อ 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 array แยกแยะค่าพารามิเตอร์ต่างๆ ของไฟล์ ดังนี้:
|
| $_FILES["file"]["name"] - ชื่อของไฟล์ |
|
| $_FILES["file"]["type"] - ชนิดของไฟล์ เช่น image/gif |
|
| $_FILES["file"]["size"] - ขนาดเป็นไบต์ (bytes) ของไฟล์ |
|
| $_FILES["file"]["tmp_name"] - ไฟล์ชั่วคราวเพื่อรอไปเก็บไว้บนเซิร์ปเวอร์ |
|
| $_FILES["file"]["error"] - โค้ดแสดงข้อผิดพลาดจากไฟล์ที่อัพโหลด |
|
| นี่เป็นแค่การแสดงข้อมูลไฟล์ที่อัพโหลดเท่านั้น เพื่อเพิ่มความปลอดภัยแก่เซิร์ปเวอร์ คุณต้องเพิ่มเงื่อนไขเข้าไปอีก |
|
ข้อจำกัดในการอัพโหลด
ในสคริปต์นี้ เราจะจำกัดผู้ใช้ให้อัพโหลดได้เฉพาะไฟล์รูปภาพ .gif กับ .jpeg เท่านั้น และขนาดไฟล์ต้องไม่เกิน 20 kb ด้วย:
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_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";
}
?>
|
|
|
การเซฟไฟล์
จากสคริปต์ข้างบน ไฟล์ได้ถูกส่งไปเก็บไว้ที่โฟลเดอร์ชั่วคราวบนเซิร์ปเวอร์แล้ว
แต่ไฟล์ชั่วคราวนั้นจะถูกลบทิ้งหลังจากสคริปต์สิ้นสุด ดังนั้นเราต้องก็อปปี้ไฟล์ชั่วคราวนั้นไปเก็บไว้ที่เราต้องการ
<?php
if (($_FILES["file"]["type"] == "image/gif")
|| ($_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";
}
?>
|
|
สคริปต์ข้างบนจะตรวจสอบว่ามีไฟล์ชื่อนี้อยู่แล้วหรือไม่ ด้วยฟังก์ชั่น file_exists() ถ้าไฟล์ชื่อนี้ไม่มีอยู่ก็จะก็อปปี้ไฟล์ ไปไว้โฟลเดอร์ที่ระบุในที่นี้คือโฟลเดอร์ชื่อ "Upload/" ด้วยฟังก์ชั่น move_uploaded_file()
คุณสามารถตั้งชื่อไฟล์ได้เอง โดยการเปลี่ยน "upload/" , $_FILES["file"]["name"] ในฟังก์ชั่น move_uploaded_file() ไปเป็น "upload/ชื่อไฟล์พร้อมนามสกุล" |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น