ตัวอย่างการสร้างฟอร์มสำหรับอัปโหลดไฟล์

การอัปโหลดไฟล์ จะสำเร็จหรือไม่นั้น ขึ้นอยู่กับ Server ด้วยนะครับว่ายอมให้อัปโหลดหรือไม่ Server ฟรีบางแห่งอาจไม่ยอมให้มีการอัปโหลดก็อดไปครับ ในหัวข้อนี้ผมจะ รวบรวมคำถามที่ถูกถามบ่อยๆ เกี่ยวกับการอัปโหลดมาไว้ที่นี่ครับ

การอัปโหลด เราต้องอัปโหลด ผ่าน ฟอร์มครับ โดยเราต้องกำหนด 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 ซึ่งเราสามารถเข้าไปเปลี่ยนค่าเพื่อให้สามารถ อัพโหลดไฟล์ที่มีขนาดใหญ่ขึ้นได้
ผู้เขียน goragod โพสต์เมื่อ 02 เม.ย. 2551 เปิดดู 12,643 ป้ายกำกับ FormPHP
^