การตรวจสอบการอัปโหลดครั้งละหลายๆไฟล์

โค้ดนี้จะรวมเอาการตรวจสอบชนิดของไฟล์อัปโหลด และตัวอย่างการอัปโหลด ไว้ด้วยกัน โดยการใช้ input ชนิด file ในแบบ แอเรย์

ส่วนแรกเป็นฟอร์มสำหรับอัปโหลดครับ เมื่อคลิก Submit จะส่งไปยัง upload.php

<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="file[]" size="40"><br>
<input type="file" name="file[]"  size="40"><br>
<input type="file" name="file[]"  size="40"><br>
<input type="file" name="file[]" size="40"><br>
<input type="file" name="file[]" size="40"><br>
<input type="submit" name="Submit" value="upload"
</form>

upload.php ไฟล์สำหรับรับการอัปโหลดที่ส่งมา ผมใช้วิธีการวน loop ด้วย foreach นะครับ เพื่อให้เห็นความแตกต่างจากการใช้ for ธรรมดาที่คุ้นเคย การใช้ foreach จะทำให้เราไม่ต้องกังวลว่าจะมี input ส่งมาทั้งหมดกี่ตัว เหมาะสำหรับการทำฟอร์มแบบที่สามารถเปลี่ยนแปลง input ได้

<?
// แอเรย์ของ mmie ที่ต้องการ
$typies = array(  "image/pjpeg" , "image/jpg" , "image/gif" );
// ตรวจสอบการอัปโหลด
foreach( $_FILES[file][type] as $i => $type )
{
     if ( $type != ''  && in_array( $type , $typies ) )
     {
          // อัปโหลด
          echo 'อัปโหลด '.$_FILES[file][tmp_name][$i].'<br />';
     }
     else if ( $type != '' )
     {
          // error
          echo 'ชนิดของไฟล์  '.$_FILES[file][name][$i].' ไม่ถูกต้อง<br />';
     };
};
 ?>

การอัปโหลดจะเกิดขึ้นในกรอบข้อความสีแดงครับ ให้เขียนการอัปโหลดขึ้นที่นั้น ตัวแปร $i ใช้สำหรับบอกว่าเป็น input ตัวที่เท่าไร ครับ ถ้าสังเกตุให้ดี จะเห็นว่า ระหว่างการอัปโหลดสำเร็จหรือไม่สำเร็จผมใช้ตัวแปรที่รับมาจาก input ต่างกัน เพื่อให้สามารถเทียบเคียงการใช้งานเอาได้ครับ

ผู้เขียน goragod โพสต์เมื่อ 06 พ.ย. 2551 เปิดดู 7,970 ป้ายกำกับ PHPForm
^