สวัสดีครับ วันนี้จะขอเขียนตัวอย่างง่ายๆ ในการ Upload ไฟล์จากเครื่องผู้ใช้ มาที่ web server โดยใช้ php ซึ่งท่านสามารถเอาไปดัดแปลงเพื่อให้ใช้งานได้ตามความต้องการครับ ในตัวอย่างนี้จะมีไฟล์ด้วยกัน 2 ไฟล์ครับ ไฟล์แรก จะเป็นฟอร์มในการ ใส่ชื่อไฟล์ที่จะ Upload ครับ ชื่อว่า main.htm code เป็นดังนี้ครับ <HTML> <FORM ENCTYPE="multipart/form-data" ACTION="add_file.php" METHOD="post"> Upload ไฟล์นี้มาที่ Server: <INPUT TYPE="file" NAME="userfile"><BR> <INPUT TYPE="submit" VALUE="Upload"><BR> </FORM> </HTML> ซึ่งก็จะเห็นว่าไม่มีอะไรยาก มีเพียงแค่ ENCTYPE="multipart/form-data" ที่จะบอกว่า ข้อมูลใน form นี้เป็น mime format เท่านั้นเอง คราวนี้ลองมาดูอีกไฟล์ที่เป็นส่วนในการจัดการ upload มาที่ server ชื่อ add_file.php ครับ หน้าตาเป็นดังนี้ <?php $Upload_Dir = "d:"; //กำหนดว่าจะให้ copy ไฟล์ที่มาจากเครื่องผู้ใช้ไปที่ใด ระบุที่นี่ได้ครับ $Max_File_Size = 100000; //กำหนดขนาดไฟล์ที่ใหญ่ที่สุดที่อนุญาตให้ upload มาที่ Server มีหน่วยเป็น byte $File_Type_Allow = array("application/x-zip-compressed" /*.zip*/, "text/plain" /*.txt*/, "image/bmp" /* .bmp, .ico*/, "image/gif" /* .gif*/, "image/pjpeg" /*.jpg, .jpeg*/, "image/jpeg" /* .jpg, .jpeg*/); //กำหนดประเภทของไฟล์ว่าไฟล์ประเภทใดบ้างที่อนุญาตให้ upload มาที่ Server function validate_form($file_input,$file_size,$file_type) { //เป็น function ที่เอาไว้ตรวจสอบว่าไฟล์ที่ผู้ใช้ upload ตรงตามเงื่อนไขหรือเปล่า global $Max_File_Size,$File_Type_Allow; if ($file_input == "none") { $error = "ไม่มี file ให้ Upload"; } elseif ($file_size > $Max_File_Size) { $error = "ขนาดไฟล์ใหญ่กว่า $Max_File_Size ไบต์"; } elseif (!check_type($file_type,$File_Type_Allow)) { $error = "ไฟล์ประเภทนี้ ไม่อนุญาตให้ Upload"; } else { $error = false; } return $error; } function check_type($type_check) { //เป็นฟังก์ชัน ที่ตรวจสอบว่า ไฟล์ที่ upload อยู่ในประเภทที่อนุญาตหรือเปล่า global $File_Type_Allow; for ($i=0;$i<count($File_Type_Allow);$i++) { if ($File_Type_Allow[$i] == $type_check) { return true; } } return false; } $error_msg = validate_form($userfile,$userfile_size,$userfile_type); // ตรวจดูว่า ไฟล์ที่ upload ตรงตามเงื่อนไขหรือเปล่า if ($error_msg) { echo $error_msg; } else { if (copy($userfile,$Upload_Dir."/$userfile_name")) { //ทำการ copy ไฟล์มาที่ Server echo "ไฟล์ Upload เรียบร้อย"; } else { echo "ไฟล์ Upload มีปัญหา"; } } ?> ครับสำหรับตัวอย่างนี้ก็คงไม่ยากอะไรในการที่จะ upload ไฟล์มาที่ Server นะครับ แต่มีข้อระวังอยู่นิดหน่อยก็คือ ในตัวอย่างจะเป็น code ที่ ทดสอบที่เครื่องของผู้เขียนเอง โดยใช้ Apache และ php บน Win98 หากจะเปลี่ยนมาใช้บน Unix Server ก็ให้แก้ตัวแปร $Upload_Dir เป็น ของ unix และที่สำคัญท่านอาจพบปัญหาเกี่ยวกับ permission ท่านต้องแน่ใจว่า directory ที่ท่านระบุเปิดสิทธิ์ให้ทุกคนมีสิทธิ์เขียนไปที่ Directory นั้นด้วย หากพบปัญหาอะไรก็ถามมาได้ครับ |
0 comments:
Post a Comment