امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
ذخیره تصاویر در MySQL و نمایش آنها با PHP قسمت اول
نویسنده پیام
P.H.P آفلاین
تازه وارد

ارسال‌ها: 7
موضوع‌ها: 5
تاریخ عضویت: شهریور ۱۳۸۹

تشکرها : 0
( 17 تشکر در 5 ارسال )
ارسال: #1
Smile  ذخیره تصاویر در MySQL و نمایش آنها با PHP قسمت اول
سلام

در این آموزش چگونگی ذخیره تصاویر دودویی (باینری) در بانک اطلاعاتی و نمایش آنها در PHP را خواهید آموخت

در این قسمت فقط ذخیره تصاویر را می آموزید، در آینده قسمت دوم آن که نمایش تصاویر است را خواهم گفت

چرا تصاویر را در بانک اطلاعاتی ذخیره کنیم؟
ممکن است شما بخواهید در سایتتان بخشی برای ذخیره تصویر کاربر قرار دهید، یا فروشگاهی ایجاد میکنید که تعدادی فروشگاه در آن گسترش یافته باشند و بخواهید برای هر کدام یک لوگو قرار دهید یا تصاویر محصولات خود را در بانک اطلاعاتی داشته باشید.

1. شما میتوانید با ذخیره در بانک اطلاعاتی امنیت بیشتری برای تصاویر و فایل های خود داشته باشید.
2. متن نیز بر روی تصویرتان قرار دهید و آنها را به سادگی مدیریت کنید.
3. فایل ها برای رکورد کاربر ذخیره خواهند شد، در نتیجه ارتباط مستقیم دارند و دسته بندی آسان انجام میشود

شما با تهیه یک نسخه پشتیبانی از بانک اطلاعاتی میتوانید تمام تصاویر را همراه داشته باشید

برای شرع کار ابتدا باید یک بانک اطلاعاتی ایجاد کنید

نحوه ی اتصال به MySQL را میتوانید از اینجا مشاهده کنید

بعد از اتصال به بانک اطلاعاتی نیاز به ایجاد جدول برای ذخیره تصاویر داریم

کد:
CREATE TABLE `tblImages`
(
`imgID` int(11) unsigned NOT NULL auto_increment,
`imgType` varchar(32) NOT NULL default '',
`imgImage` BLOB NOT NULL,
`imgSize` varchar(32) NOT NULL default '',
`imgDate` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`imgID`)
) TYPE=MyISAM;

معرفی:

int از نوع عددی

auto_increment ایجاد اتوماتیک ID

varchar از نوع کاراکتر

BLOB شیء بزرگ دودویی است که در سریعترین زمان ذخیره سازی میکند و خروجی میگیرد.

از انواع BLOB میتوان به
کد:
BLOB
TINYBLOB
MEDIUMBLOB
LONGBLOB
اشاره کرد.

datetime شیء برای قرار دادن تاریخ و ساعت ذخیره سازی


این جدول برای قرارگیری تصاویر در بانک اطلاعاتی ایجاد شده است


ما در این آموزش قصد داریم تصویر را به همراه نوع فایل و سایز آن ذخیره کنیم


در اینجا نیاز به یک فرم html برای ارسال تصویر داریم

کد:
<form method="post" action="upload.php" enctype="multipart/form-data">
<input name="image" type="file" />
<input type="submit" value="submit" />
</form>
با افزودن enctype و قراردادن multipart/form-data مرورگر قادر به ارسال اطلاعات دودویی خواهد بود


بعد از ایجاد فرم نیاز به افزودن داده ها در بانک اطلاعاتی داریم


کد زیر را در فایل upload.php قرار دهید سپس اتصال با بانک اطلاعاتی را ایجاد کنید.

کد php:
<?php

$iSize 
10000;

$iWidth 100;

$iHeight 100;

if((isset(
$_FILES["image"])) && ($_FILES["image"]["size"] > 0))
{
 
$imgSize $_FILES["image"]["size"];
 
$imgType $_FILES["image"]["type"];
 
$tmpName $_FILES["image"]["tmp_name"];

 if(
$imgSize $iSize)
 exit(
"Error: Large file size.");

 
$getImgSize getimagesize($tmpName);

 if(!
$getImgSize)
 exit(
"Error: Invalid Image File.");

 list(
$width$height) = $getImgSize;

 if((
$width $iWidth) || ($height $iHeight))
 exit(
"Maximum width and height exceeded. Please upload images below 100x100px size");

 
$fp fopen($tmpName'r');
 
$imageName fread($fpfilesize($tmpName));

 if(!
get_magic_quotes_gpc())
 
$imageName addslashes($imageName);

 
fclose($fp);

 
$date date("Y-m-d H:i:s");

 
$query "INSERT INTO tblImages (imgType, imgImage, imgSize, imgDate) VALUES ('$imgType', '$imageName', '$imgSize', '$date')";
 
mysql_query($query);

 echo 
"Your file has been uploaded.";
}

?>
متغییر های تعریف شده در اینجا:

iSize: حجم تصویر
iWidth: عرض تصویر
iHeight: ارتفاع تصویر


شرط ما برای ذخیره سازی این است که کاربر فایل را انتخاب کرده و سایز آن بزرگتر از صفر است

کد php:
if((isset($_FILES["image"])) && ($_FILES["image"]["size"] > 0)) 
متغییر های تعریف شده فایل:

imgSize: دریافت سایز تصویر ارسال شده
imgType: نوع تصویر ارسال شده
tmpName: ذخیره موقت تصویر در tmp

برای چک کردن صحت حجم تصویر از شرط زیر استفاده کردیم

کد php:
if($imgSize $iSize)
exit(
"Error: Large file size."); 
تابع getimagesize برای دریافت ابعاد تصویر است، اگر false باشد یعنی فایل ارسالی تصویر نیست

برای این کار از شرط زیر استفاده کردیم

کد php:
if(!$getImgSize)
exit(
"Error: Invalid Image File."); 
شرط زیر برای چک کردن عرض و ارتفاع است


کد php:
if(($width $iWidth) || ($height $iHeight))
exit(
"Maximum width and height exceeded. Please upload images below 100x100px size"); 


تابع fopen برای خواندن فایل یا URL استفاده میشود، آدرس را از tmp ها میخواند

تابع fread برای خواندن امن فایل های دودویی یا باینری به کار میرود

تابع filesize برای دریافت سایز فایل استفاده میشود


تابع get_magic_quotes_gpc در این شرط گفته شده اگر غیر فعال بود از addslashes استفاده کن.


get_magic_quotes_gpc تمامی qoute ها را با متغیر های ارسالی با اضافه کردن slash فیلتر میکنه


تایع addslashes همونطور که از اسمش مشخص است برای اضافه کردن slash به کار میرود تا مشکلی احتمالی برای افزودن رکورد پیش نیاید


تابع fclose برای بستن فایل باز شده استفاده میشود.


در ادامه آموزش نمایش تصویر از طریق بانک اطلاعاتی را خواهم گفت


منبع: http://www.Vvolf.net


موفق
۰۸-شهریور-۱۳۸۹, ۰۹:۴۹:۰۶
ارسال‌ها
پاسخ
تشکر شده توسط : ha_60, hamed_Arfaee, amir00, CRazYFULL, Ghoghnus, javaweb
P.H.P آفلاین
تازه وارد

ارسال‌ها: 7
موضوع‌ها: 5
تاریخ عضویت: شهریور ۱۳۸۹

تشکرها : 0
( 17 تشکر در 5 ارسال )
ارسال: #2
RE: ذخیره تصاویر در MySQL و نمایش آنها با PHP قسمت اول
ادامه آموزش و قسمت دوم و روش نمایش تصاویر را میتوانید در آدرس زیر مشاهده کنید

کد:
http://www.iranled.com/forum/showthread.php?tid=18650
۱۶-شهریور-۱۳۸۹, ۱۶:۴۵:۰۶
ارسال‌ها
پاسخ
تشکر شده توسط : CRazYFULL
Y.P.Y آفلاین
كاربر تک ستاره
*

ارسال‌ها: 50
موضوع‌ها: 27
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 5
( 56 تشکر در 29 ارسال )
ارسال: #3
RE: ذخیره تصاویر در MySQL و نمایش آنها با PHP قسمت اول
آموزش خوبیه ولی:

ذخیره تصویر(BLoB) در Db کار بسیار اشتبا هیه، و تعداد بالا حجم بسیار زیادی و فشار بسیار زیادی به سرور میاره. اغلب آدرس تصویر رو ذخیره می کنن نه خود تصویر رو.
۱۰-شهریور-۱۳۹۰, ۱۸:۳۶:۳۱
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مشکل نمایش فارسی در json javaweb 1 3,124 ۱۶-تير-۱۳۹۴, ۱۵:۱۶:۱۲
آخرین ارسال: javaweb
  مشکل نمایش فارسی فاطمه وطن دوست 2 3,201 ۱۹-مهر-۱۳۹۳, ۱۲:۴۴:۵۰
آخرین ارسال: فاطمه وطن دوست
  آموزش برقراری ارتباط PHP و MySQL Ghoghnus 1 2,961 ۰۵-دى-۱۳۹۲, ۱۸:۱۹:۱۳
آخرین ارسال: lord_viper
Question [سوال] نمایش تعداد افرادی عضو آنلان در سایت crafcrab 6 4,506 ۰۴-دى-۱۳۹۲, ۱۶:۵۵:۲۷
آخرین ارسال: lord_viper
  آموزش ساخت نقشه سایت برای موتورهای جستجو با PHP و MySQL Ghoghnus 0 2,622 ۰۱-دى-۱۳۹۲, ۱۸:۴۷:۱۳
آخرین ارسال: Ghoghnus
Question نمایش رتبه ی الکسا javaweb 1 1,676 ۰۹-مرداد-۱۳۹۲, ۱۲:۳۴:۲۸
آخرین ارسال: lord_viper
  [آموزشی] ذخیره و بازیابی صحیح در mysql lord_viper 0 1,553 ۲۹-خرداد-۱۳۹۲, ۲۰:۲۶:۳۱
آخرین ارسال: lord_viper
Rolleyes [سوال] ذخیره ی در جدول javaweb 1 1,661 ۲۶-خرداد-۱۳۹۲, ۱۹:۴۵:۱۰
آخرین ارسال: babyy
  پرامپت mysql مرد یخی 1 2,238 ۰۶-اسفند-۱۳۹۱, ۱۴:۲۴:۳۵
آخرین ارسال: NabiKAZ
Question [سوال] ذخیره سورس یک وب سایت sajadgh 2 3,177 ۲۵-آذر-۱۳۹۰, ۱۵:۱۱:۳۸
آخرین ارسال: sajadgh

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS