Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,036

HOME > Free Web Script > PHP > PHP Upload MySQL BLOB Image (BLOB Binary Data in a MySQL Database)



Clound SSD Virtual Server
 

PHP Upload MySQL BLOB Image (BLOB Binary Data in a MySQL Database)

  PHP Upload Image (BLOB Binary Data in a MySQL Database) บทความ Script ตัวอย่างการใช้ PHP เพื่อทำการ Upload รูปภาพ ลงในฐานข้อมูลของ MySQL โดยเก็บข้อมูลไฟล์ลงในฟิวด์ของ MySQL ในรูปแบบของ Binary ผ่าน Data Type BLOB ของ MySQL


ความสามารถของ Script
- เก็บฟิวด์ชื่อและรูปภาพลงใน MySQL ผ่าน Data Type BLOB ของ MySQL
- Form สำหรับ Upload ข้อมูลลงใน MySQL
- Form สำหรับแสดงข้อมูลรูปภาพ
- Form สำหรับการแก้ไขข้อมูลรูปภาพ

ปกติแล้วการเก็บรูปภาพ หรืออัพโหลดรูปภาพจะนิยมทำการ Upload รูปภาพลงในโฟเดอร์ และมีการเก็บเพียงชื่อไฟล์หรือ path ลงใน MySQL ซึ่งวิธีนี้จะสะดวกต่อการจับเก็บและการนำไปใช้ รวมทั้งป้องกันไม่เปลืองเนื้อที่ของ MySQL ในการจัดเก็บด้วย ซึ่งการเรียกใช้งานก็สามารถอ้างอิงจาก Path ของรูปภาพได้เลย เช่น

Code
$image = "picture/win.jpg";
<img src="<?php echo $image;?>">


แต่ในกรณีที่เราจัดเก็บรุปภาพทั้งหมดที่ถูกแปลงเป็น Binary แล้วลงในฐานข้อมูล MySQL จะไม่สามารถเรียกชื่อไฟล์นั้นได้โดงตรง แต่จะต้องสร้างไฟล์ php สำหรับอ่าน Binary Data และแปลงมาเป็นรุปภาพอีกขั้นตอนหนึ่ง จากนั้นก็อ้างอิง Path จากไฟล์ php นั้น ๆ เพื่อแสดงรูปภาพออกมาก

view.php
... $_GET["id"]; and Read image Binary From Table

Code
<img src="view.php?id=123">


จากตัวอย่างจะเห็นว่าเราจะต้องสร้างไฟล์ view.php ไว้อ่านค่ารูปภาพ โดยส่งค่าผ่าน id และเมื่อได้รูปภาพออกมาแล้ว ก็จะได้ค่า Binary กลับ และเมื่อเราใช้ tag <img> ในการรับค่า Binary ผลพัพธ์ก็จะแสดงรูปภาพนั้นออกมา วิธีนี้จะสามารถป้องกันการ Save รูปภาพผ่าน Web Browser ได้อีกด้วย

การจัดเก็บข้อมูลรูปภาพผ่าน Binary ของ BLOB ไม่ค่อยได้รับความนิยม อันเนื่องจาก ประมาณการจัดเก็บและการนำไปใช้ค่อนข้างจะยาก และมีปัญหาเรื่อง Database บวม เมื่อข้อมูลรูปภาพมีปริมาณมาก


เริ่มต้น Code ทั้งหมด

Table
CREATE TABLE `files` (
  `FilesID` int(4) NOT NULL auto_increment,
  `Name` varchar(100) NOT NULL,
  `FilesName` blob NOT NULL,
  PRIMARY KEY  (`FilesID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;



ViewImage.php
<?php
	$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
	$objDB = mysql_select_db("mydatabase");
	$strSQL = "SELECT * FROM files WHERE FilesID = '".$_GET["FilesID"]."' ";
	$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
	$objResult = mysql_fetch_array($objQuery);

	echo $objResult["FilesName"];
?>


PageUploadToMySQL1.php
<html>
<head>
<title>ThaiCreate.Com Tutorial</title>
</head>
<body>
	<form name="form1" method="post" action="PageUploadToMySQL2.php" enctype="multipart/form-data">
	Name : <input type="text" name="txtName"><br>
	Picture : <input type="file" name="filUpload"><br>
	<input name="btnSubmit" type="submit" value="Submit">
	</form>
</body>
</html>









PageUploadToMySQL2.php
<html>
<head>
<title>ThaiCreate.Com Tutorial</title>
</head>
<body>
<?php
	if($_FILES["filUpload"]["name"] != "")
	{
		
		//*** Read file BINARY ***'
		$fp = fopen($_FILES["filUpload"]["tmp_name"],"r");
		$ReadBinary = fread($fp,filesize($_FILES["filUpload"]["tmp_name"]));
		fclose($fp);
		$FileData = addslashes($ReadBinary);

		//*** Insert Record ***//
		$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
		$objDB = mysql_select_db("mydatabase");
		$strSQL = "INSERT INTO files ";
		$strSQL .="(Name,FilesName) VALUES ('".$_POST["txtName"]."','".$FileData."')";
		$objQuery = mysql_query($strSQL);		

		echo "Copy/Upload Complete<br>";
		mysql_close($objConnect);
	}
?>
<a href="PageUploadToMySQL3.php">View files</a>
</body>
</html>


PageUploadToMySQL3.php
<html>
<head>
<title>ThaiCreate.Com Tutorial</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>
<?php
	$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
	$objDB = mysql_select_db("mydatabase");
	$strSQL = "SELECT * FROM files";
	$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table width="340" border="1">
<tr>
<th width="50"> <div align="center">Files ID </div></th>
<th width="150"> <div align="center">Picture</div></th>
<th width="150"> <div align="center">Name</div></th>
<th width="150"> <div align="center">Edit</div></th>
</tr>
<?php
	while($objResult = mysql_fetch_array($objQuery))
	{
?>
<tr>
<td><div align="center"><?php echo $objResult["FilesID"];?></div></td>
<td><center><img src="ViewImage.php?FilesID=<?php echo $objResult["FilesID"];?>"></center></td>
<td><center><?php echo $objResult["Name"];?></center></td>
<td><center><a href="PageUploadToMySQL4.php?FilesID=<?php echo $objResult["FilesID"];?>">Edit</a></center></td>
</tr>
<?php
	}
?>
</table>
<?php
mysql_close($objConnect);
?>
</body>
</html>


PageUploadToMySQL4.php
<html>
<head>
<title>ThaiCreate.Com Tutorial</title>
</head>
<body>
<?php
	$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
	$objDB = mysql_select_db("mydatabase");
	$strSQL = "SELECT * FROM files WHERE FilesID = '".$_GET["FilesID"]."' ";
	$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
	$objResult = mysql_fetch_array($objQuery);
?>
	<form name="form1" method="post" action="PageUploadToMySQL5.php?FilesID=<?php echo $_GET["FilesID"];?>" enctype="multipart/form-data">
	Edit Picture :<br>
	Name : <input type="text" name="txtName" value="<?php echo $objResult["Name"];?>"><br>
	<img src="ViewImage.php?FilesID=<?php echo $objResult["FilesID"];?>"><br>
	Picture : <input type="file" name="filUpload"><br>
	<input name="btnSubmit" type="submit" value="Submit">
	</form>
</body>
<?php
	mysql_close($objConnect);
?>
</html>


PageUploadToMySQL5.php
<html>
<head>
<title>ThaiCreate.Com Tutorial</title>
</head>
<body>
<?php

		//*** Update Record ***//
		$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
		$objDB = mysql_select_db("mydatabase");

		$strSQL = "UPDATE files ";
		$strSQL .=" SET NAME = '".$_POST["txtName"]."' WHERE FilesID = '".$_GET["FilesID"]."' ";
		$objQuery = mysql_query($strSQL);		
	
	if($_FILES["filUpload"]["name"] != "")
	{

			//*** Read file BINARY ***'
			$fp = fopen($_FILES["filUpload"]["tmp_name"],"r");
			$ReadBinary = fread($fp,filesize($_FILES["filUpload"]["tmp_name"]));
			fclose($fp);
			$FileData = addslashes($ReadBinary);			

			//*** Update New File ***//
			$strSQL = "UPDATE files ";
			$strSQL .=" SET FilesName = '".$FileData."' WHERE FilesID = '".$_GET["FilesID"]."' ";
			$objQuery = mysql_query($strSQL);		

			echo "Copy/Upload Complete<br>";

	}
	mysql_close($objConnect);
?>
<a href="PageUploadToMySQL3.php">View files</a>
</body>
</html>



Screenshot

PHP Upload file to MySQL BLOB

Form สำหรับการ Upload


PHP Upload file to MySQL BLOB

Form สำหรับการแสดงข้อมูล

PHP Upload file to MySQL BLOB

Form สำหรับการแก้ไขข้อมูล

จากตัวอย่างจะเห็นว่าเราไม่สามารถเรียกรูปภาพจาก tag <img> ได้โดยตรง แต่จะต้องมีการสร้างไฟล์ ViewImage.php โดยการส่งค่า ID ไปด้วย ไว้สำหรับอ่าน Binary Data ก่อน แล้วค่อยทำการส่งค่ากลับให้กับ Tag <img>

Code
<img src="ViewImage.php?FilesID=<?php echo $objResult["FilesID"];?>">



Download Code!!








บทความอื่น ๆ ที่เกี่ยวข้อง
Go to : PHP สร้างฟอร์มสำหรับ Upload รูปภาพลงในฐานข้อมูล MySQL พร้อมกับแบบ Form สำหรับการแก้ไขรูปภาพ
Go to : PHP Upload BLOB into Access Database (Access BLOB Binary)
Go to : PHP MySQL Multiple Upload File to MySQL Database - CreateElement Input File Upload
Go to : PHP MySQL Upload File to MySQL Database - Multiple Dynamic CreateElement Input File Upload


   
Share

Bookmark.
  Score Rating :
  Create Date : 2011-04-24 00:08:09
  View : 87,504
  Download : No files
     
Sponsored Links
PHP สร้าง WebBoard กระดานถาม-ตอบ เว็บบอร์ดสำหรับเว็บ PHP กับ MySQL
บทความ php ตัวอย่าง code การสร้าง webboard ด้วย php กับ mysql แบบง่าย ๆ สามารถนำไปใช้งานจริง
Rating : Update : 2017-03-24 21:07:15
PHP สร้างระบบตะกร้าสั่งซื้อสินค้า Shopping Cart ด้วย Session และ Array (PHP กับ MySQL)
สร้างระบบตะกร้าและ shhopping cart แบบง่าย ๆ ด้วย php โดยทำงานในรูปแบบ session กับ array
Rating : Update : 2017-03-24 21:05:36
PHP Upload Oracle BLOB (Binary Data)
ตัวอย่างการ php กับ oracle ใช้ในการ upload ไฟล์ BLOB Data Type ลงในฐานข้อมูล Oracle Database Server
Rating : Update : 2017-03-24 21:04:13
PHP Upload File BLOB/Image to SQL Server Database (mssql-OPENROWSET)
ตัวอย่างการ script ใช้ในการ upload ไฟล์ Blob หรือ Image Data Type ลงในฐานข้อมูล SQL Server 2000,2005,2008
Rating : Update : 2017-03-24 21:02:40
ThaiCreate.Com Forum


Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


Hit Link
   







Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่