ตัวอย่างการสร้างฟอร์มสำหรับอัปโหลดไฟล์
การอัปโหลดไฟล์ จะสำเร็จหรือไม่นั้น ขึ้นอยู่กับ Server ด้วยนะครับว่ายอมให้อัปโหลดหรือไม่ Server ฟรีบางแห่งอาจไม่ยอมให้มีการอัปโหลดก็อดไปครับ ในหัวข้อนี้ผมจะ รวบรวมคำถามที่ถูกถามบ่อยๆ เกี่ยวกับการอัปโหลดมาไว้ที่นี่ครับ
การอัปโหลด เราต้องอัปโหลด ผ่าน ฟอร์มครับ โดยเราต้องกำหนด content types ให้กับฟอร์ม เป็น enctype="multipart/form-data" เช่น
ดูตัวอย่างกันเลย สำหรับฟอร์มส่งไฟล์
จากตัวอย่าง เราสามารถใช้ร่วมกับ input ชนิดอื่นๆได้ ใน form เดียวกัน
สำหรับโค้ดในการรับค่าจากฟอร์ม มีโค้ดดังนี้ (ตามตัวอย่าง upload.php)
หลังจากการตรวจสอบว่ามีการส่งไฟล์มาด้วยหรือไม่แล้ว หากต้องการ อัพโหลดไฟล์ ใช้โค้ดนี้
การอัปโหลดไฟล์ขนาดใหญ่
โดยปกติขนาดของไฟล์ที่ PHP ยอมให้ Upload ได้ จะเป็น 2 Mb ซึ่งถูกกำหนดไว้ใน php.ini ที่ตัวแปรชื่อ upload_max_filesize ซึ่งเราสามารถเข้าไปเปลี่ยนค่าเพื่อให้สามารถ อัพโหลดไฟล์ที่มีขนาดใหญ่ขึ้นได้
การอัปโหลด เราต้องอัปโหลด ผ่าน ฟอร์มครับ โดยเราต้องกำหนด content types ให้กับฟอร์ม เป็น enctype="multipart/form-data" เช่น
<form method="post" action="post.php" enctype="multipart/form-data">
.......
</form>
ดูตัวอย่างกันเลย สำหรับฟอร์มส่งไฟล์
<form method="post" action="upload.php" enctype="multipart/form-data">
เมล์ : <input type="text" name="email" size="33">
ไฟล์ : <input type="file" name="fileupload" size="33">
<input type=submit value="ส่ง" name="submit">
</form>
จากตัวอย่าง เราสามารถใช้ร่วมกับ input ชนิดอื่นๆได้ ใน form เดียวกัน
สำหรับโค้ดในการรับค่าจากฟอร์ม มีโค้ดดังนี้ (ตามตัวอย่าง upload.php)
<?php
$email = $_POST["email];
$fileupload = $_FILES["fileupload];
if (!empty($email)) {
echo $email."<br />";
}
if ($fileupload['tmp_name'] != "") {
echo "มีไฟล์แนบมาด้วย<br />";
echo "ชื่อไฟล์ (<font color=green>name</font>) <font color=red>$fileupload['name']</font> ชื่อไฟล์ที่อัปโหลดมา เราใช้ค่านี้ในการตรวจสอบว่ามีไฟล์ส่งมาหรือไม่<br />";
echo "ขนาด (<font color=green>size</font>) <font color=red>$fileupload['size']</font> ไบต์ ตรวจสอบขนาดไฟล์ที่จะอัปโหลด ที่นี่<br />";
echo "ชนิดของไฟล์ (<font color=green>type</font>) <font color=red>$fileupload['type'] </font>สามารถใช้ค่านี้ในการตรวจสอบชนิดของไฟล์ที่ต้องการได้<br />";
echo "ไฟล์ที่อัปโหลด (<font color=green>tmp_name</font>) <font color=red>$fileupload['tmp_name']</font> สำหรับการเรียกใช้ฟังก์ชี่น copy<br />";
// สำเนาไฟล์อัปโหลดไปเก็บยังปลายทาง ในชื่อ filename
//copy($fileupload['tmp_name'], "path/to/filename");
} else {
echo "ไม่มีไฟล์ส่งมาด้วย.";
}
หลังจากการตรวจสอบว่ามีการส่งไฟล์มาด้วยหรือไม่แล้ว หากต้องการ อัพโหลดไฟล์ ใช้โค้ดนี้
copy($fileupload['tmp_name'], "path/to/filename");
- path/to คือเส้นทางสำหรับไดเร็คทอรี่ปลายทางที่อัพโหลดไฟล์ ส่วน filename เราอาจใช้ชื่อเดิมคือ $fileupload['name'] หรือจะสร้างชื่อใหม่ก็ได้
- หรือหากต้องการตรวจสอบขนาดของไฟล์ก่อน ก็ให้ตรวจสอบได้จากค่าของ $fileupload['size']
- หรือหากต้องการตรวจสอบชนิดของไฟล์ก่อน ก็ให้ตรวจสอบได้จากค่าของ $fileupload['type']
การอัปโหลดไฟล์ขนาดใหญ่
โดยปกติขนาดของไฟล์ที่ PHP ยอมให้ Upload ได้ จะเป็น 2 Mb ซึ่งถูกกำหนดไว้ใน php.ini ที่ตัวแปรชื่อ upload_max_filesize ซึ่งเราสามารถเข้าไปเปลี่ยนค่าเพื่อให้สามารถ อัพโหลดไฟล์ที่มีขนาดใหญ่ขึ้นได้