18 | upload image with php การอัปโหลดรูปภาพเก็บในฐานข้อมูล
การอัปโหลดรูปภาพเก็บในฐานข้อมูล มีวิธีทำ 2 วิธี คือ
- อัปโหลดเป็นรูปภาพเก็บไว้ในโฟลเดอร์ แล้วเก็บชื่อภาพไว้ในฐานข้อมูล
- อัปโหลดรูปภาพอัดลงไปในฐานข้อมูลเลย
ทั้งสองวิธีนี้ต่างมีข้อดีและข้อเสีย
วิธีที่ 1 ข้อดีคือ ฐานข้อมูลไม่บวม เพราะเก็บเฉพาะชื่อรูปภาพเท่านั้น ส่วนข้อเสียคือ โฟลเดอร์ที่ใช้เก็บรูปภาพ ต้องกำหนด permission เป็น 0777 เขียนและอ่านได้ ซึ่งในบางสภาพแวดล้อม เป็นเรื่องที่ลำบาก โดยเฉพาะกับโฮสต์ที่เป็นวินโดว ต้องติดต่อ admin ให้ช่วย ช่างวุ่นวาย
วิธีที่ 2 ข้อดีคือ ไม่ต้องสนใจ permisstion ของโฟลเดอร์ที่เก็บรูปภาพ ส่วนข้อเสียคือ ฐานข้อมูลจะบวมใหญ่ โดยใช่เหตุ ถ้าระบบเล็กๆก็ไม่เป็นไรหรอก แต่ถ้าระบบใหญ่ๆ มีปัญหาแน่
จะกล่าวถึงวิธีที่ 1 ก่อน
ผมขอแนะนำคลาสตัวหนึ่งชื่อ class.upload.php ผมใช้อยู่ อันที่จริง php มีคำสั่งจัดการรูปภาพอยู่นะ แต่ผมว่าใช้โค้ดที่คนอื่นเขียนแจกไว้แล้ว คล่องกว่า
ซึ่ง class.upload.php นี้ ความสามารถสูงส่ง ทั้งใช้ง่าย ความสามารถโดยคร่าวๆ นะ
- สามารถ ย่อ ขยาย ภาพ
- สามารถ เพิ่มลายน้ำเข้าไปในรูปภาพ
- สามารถ เพิ่มโลโก้ซ้อนเข้าไปในภาพ
- สามารถ คร้อปภาพ
- เพิ่มแสง เพิ่มเงา พิมตัวอักษร เข้าไปในรูปภาพ
- และอื่นๆ อีกเพียบ ซึ่งเขามี help ให้อ่านในเว็บ
ดาวน์โหลด class.upload.php ที่ http://www.verot.net/php_class_upload_download_zip.htm
อ่าน help เพิ่มเติมที่ http://www.verot.net/res/sources/class.upload.html
โครงสร้างฐานข้อมูลในตัวอย่าง
– —————————- – TABLE structure FOR tbl_image – —————————- CREATE TABLE `tbl_image` ( `image_id` tinyint(4) UNSIGNED NOT NULL AUTO_INCREMENT, `image_name` varchar(50) NOT NULL COMMENT ‘จัดเก็บชื่อรูปภาพ’, PRIMARY KEY (`image_id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; – —————————-
– —————————-
ตัวอย่างโค้ด :
<?php // Include คลาส class.upload.php เข้ามา เพื่อจัดการรูปภาพ require_once('class/class.upload.php') ; // ส่วนกำหนดการเชื่อมต่อฐานข้อมูล $hostname_connection = "localhost"; $database_connection = "db_test"; $username_connection = "root"; $password_connection = ""; $connection = mysql_pconnect($hostname_connection, $username_connection, $password_connection) or trigger_error(mysql_error(),E_USER_ERROR); mysql_query( "SET NAMES UTF8" ) ; // ถ้าหากหน้านี้ถูกเรียก เพราะการ submit form // ประโยคนี้จะเป็นจริงกรณีเดียวก็ด้วยการ submit form if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { // เริ่มต้นใช้งาน class.upload.php ด้วยการสร้าง instant จากคลาส $upload_image = new upload($_FILES['image_name']) ; // $_FILES['image_name'] ชื่อของช่องที่ให้เลือกไฟล์เพื่ออัปโหลด // ถ้าหากมีภาพถูกอัปโหลดมาจริง if ( $upload_image->uploaded ) { // ย่อขนาดภาพให้เล็กลงหน่อย โดยยึดขนาดภาพตามความกว้าง ความสูงให้คำณวนอัตโนมัติ // ถ้าหากไม่ต้องการย่อขนาดภาพ ก็ลบ 3 บรรทัดด้านล่างทิ้งไปได้เลย $upload_image->image_resize = true ; // อนุญาติให้ย่อภาพได้ $upload_image->image_x = 400 ; // กำหนดความกว้างภาพเท่ากับ 400 pixel $upload_image->image_ratio_y = true; // ให้คำณวนความสูงอัตโนมัติ $upload_image->process( "upload_images" ); // เก็บภาพไว้ในโฟลเดอร์ที่ต้องการ *** โฟลเดอร์ต้องมี permission 0777 // ถ้าหากว่าการจัดเก็บรูปภาพไม่มีปัญหา เก็บชื่อภาพไว้ในตัวแปร เพื่อเอาไปเก็บในฐานข้อมูลต่อไป if ( $upload_image->processed ) { $image_name = $upload_image->file_dst_name ; // ชื่อไฟล์หลังกระบวนการเก็บ จะอยู่ที่ file_dst_name $upload_image->clean(); // คืนค่าหน่วยความจำ // เก็บชื่อภาพลงฐานข้อมูล $insertSQL = sprintf("INSERT INTO tbl_image (image_name) VALUES ( '%s' )", $image_name ); echo $insertSQL ; mysql_select_db($database_connection, $connection); $Result1 = mysql_query($insertSQL, $connection) or die(mysql_error()); }// END if ( $upload_image->processed ) }//END if ( $upload_image->uploaded ) } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Upload Image To Database</title> </head> <body> <form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> <p>Image_name <input name="image_name" type="file" id="image_name" size="40" /> </p> <p> <input type="submit" value="Upload" /> <input type="hidden" name="MM_insert" value="form1" /> </p> </form> </body> </html>
บทความน่าสนใจ
- upload image with php II การอัปโหลดรูปภาพเก็บในฐานข้อมูล II
- upload image with php II การอัปโหลดรูปภาพเก็บในฐานข้อมูล ภาคแสดงผล
- รวมฮิต jQuery upload file plugin
- ระบบยืนยันการลงทะเบียนด้วยอีเมล์ verify by email
- mySQL กับค่า NULL
มี 10 ความเห็น ในบทความเรื่อง “upload image with php การอัปโหลดรูปภาพเก็บในฐานข้อมูล”
แสดงความเห็น
Categories
-
Recent Posts
- เครื่องฟ้อง error จอฟ้า STOP: c0000221 {Bad Image Checksum}
- The application failed to initialize properly(000000)
- อยากเปิดร้านคอม ทำยังไงดี?
- Wordpress Theme PhotoMadness ธีมสำหรับคนชอบถ่ายภาพ
- mail server : ติดตั้ง argosoft mail server
- mail server สร้างเมล์เซิฟเวอร์ทดสอบโค้ดส่งอีเมล์ ด้วย hmailserver
- php redirect สั่งเด้งฟ้าผ่า
- javascript ห้ามคลิกขวา
- CSS IE Bugs แมลงร้ายในไออี 6
- PHP round ปัดเศษ
- PHP ceil() ปัดเศษขึ้น
- Gravatar สร้างร่างใหม่สู่โลกออนไลน์
- PHP floor() ปัดเศษลง
- แจกโค้ด php คำนวณอายุ
- PHP date() ฟังก์ชั่นจัดการวัน-เวลา
Tags
Array Back to the basic calendar CAPTCHA chart CSS Dreamveawer error firefox firefox plugin FPDF General gmail google hotmail html icon icons javascript jQuery jquery plugin jquery slide jquery tooltip jQuery tutorial jQuery UI loop Mac MySQL Other PHP plugin program programming slide slide show SMF smf themes smf themes download smf themes free smf themes thai SQL sql function tooltip Wordpress wordpress plugin
ไม่เข้าใจเกี่ยวกับการใช้งาน class.upload.php
อ่านตามลิงค์แล้วเป็น eng แปลไม่ค่อยออกเท่าไรค่ะ
ไม่มีวิธีลัดหรอ
ในตัวอย่างที่ผมเขียนในบทความ ก็เพียงพอสำหรับการใช้งาน แต่ถ้าจะให้พิสดารขึ้นไปอีก ก็ต้องอ่านภาษาอังกฤษให้ออกครับ
วิธีลัดเหรอ มีครับ คัดลอกโค้ดของผมแล้วแก้ไข ไง ลัดที่สุดแล้ว
ผมจะสามารถนำโค๊ดนี้ไปต่อกับภาคแสดงผลได้ยังไงครับ
ช่วยชี้แนะหน่อยครับ ขอบคุณมากครับ
ไม่ต้องไปต่ออะไรกันเลยครับ อัปโหลดก็หน้าหนึ่ง แสดงก็หน้าหนึ่ง
มีแบบ array ไหมครับทีละหลายรูปนะเจ้า class ตัวนี้
เอาลูปไปคร่อมโค้ดครับ วิธีการจะคล้ายกับบทความ http://www.select2web.com/php/delete-database-by-checkbox.html
เปลี่ยนจากการลบ ไปเป็นเพิ่มรูปเอาครับ
ลองแสดงตัวอย่างให้ดูหน่อยได้ไหมครับ
ผมลองแล้วมันไม่ได้อะยังไงช่วยนะครับ มือ
ใหม่ อิอิ
Upload ได้ครับ แต่มันสร้างเพิ่มให้อีก 1 ไฟล์ รวมเป็น 2 เช่น
upload file a มันก็จะมี file a และ a-1 ใน folder test อ่ะครับ จะแก้ไขอย่างไร ครับ แล้วเรากำหนดได้ไหมว่าให้ Up Load ได้เฉพาะนามสกุลนี้ แล้วรายละเอียดการใช้งาน ที่บอก crop ได้ Resize ได้ นี่ทำไงครับ
ถ้าไฟล์ชื่อซ้ำกันมันจะสร้างให้ใหม่ครับ ยกเว้นเราเซ็ตบอกให้มันทับ ส่วนการใช้งานอย่างละเอียดนั้นอ่านได้ที่ http://www.verot.net/res/sources/class.upload.html
ขอบคุณเป็นอย่างสูงค่ะ