آژانس هواپیماییexchanging

ذخیره تصاویر در MySQL و نمایش آنها با PHP قسمت اول

شروع موضوع توسط P.H.P ‏30 آگوست 2010 در انجمن PHP

  1. P.H.P

    P.H.P کاربر تازه وارد

    تاریخ عضویت:
    ‏12 جولای 2009
    نوشته ها:
    8
    تشکر شده:
    0
    محل سکونت:
    سایبر
    سلام

    در این آموزش چگونگی ذخیره تصاویر دودویی (باینری) در بانک اطلاعاتی و نمایش آنها در 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


    موفق
     
  2. P.H.P

    P.H.P کاربر تازه وارد

    تاریخ عضویت:
    ‏12 جولای 2009
    نوشته ها:
    8
    تشکر شده:
    0
    محل سکونت:
    سایبر