آژانس هواپیمایی
pop up

روش ریختن فایل در دیتابیس

شروع موضوع توسط hba ‏18 آگوست 2007 در انجمن آموزش PHP به زبان فارسی

  1. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    دیدم شاید همه بخواههند بخونند گفتم اینجا جدا بزنم
    در یه تاپیک دیگه یکی پرسیده بود زدم ولی موضوعش خوب نبود پیدا و سرچ نمی شد

    ساخت فیلد مورد نظر
    یکی از اینها
    • TINYBLOB
    • BLOB
    • MEDIUMBLOB
    • LONGBLOB
    PHP:
    CREATE TABLE upload (
        
    id INT NOT NULL AUTO_INCREMENT,
        
    name VARCHAR(30NOT NULL,
        
    type VARCHAR(30NOT NULL,
        
    size INT NOT NULL,
        
    content MEDIUMBLOB NOT NULL,
        
    PRIMARY KEY(id)
        );
    فرم گرفتن فایل عکس و یا هر فایلی
    PHP:
    <form method="post" enctype="multipart/form-data">
       <
    table width="350" border="0" cellpadding="1"     cellspacing="1" class="box">
       <
    tr
       <
    td width="246">
       <
    input type="hidden" name="MAX_FILE_SIZE" value="2000000">
       <
    input name="userfile" type="file" id="userfile">     
       </
    td>
       <
    td width="80"><input name="upload" type="submit"     class="box" id="upload" value=" Upload "></td>
       </
    tr>
       </
    table>
       </
    form>
    ریختن در دیتابیس
    PHP:
    <?php
      
    if(isset($_POST['upload']) && $_FILES['userfile']['size'] >    0)
      {
      
    $fileName $_FILES['userfile']['name'];
      
    $tmpName  $_FILES['userfile']['tmp_name'];
      
    $fileSize $_FILES['userfile']['size'];
      
    $fileType $_FILES['userfile']['type'];
      
      
    $fp      fopen($tmpName'r');
      
    $content fread($fpfilesize($tmpName));
      
    $content addslashes($content);
      
    fclose($fp);
      
      if(!
    get_magic_quotes_gpc())
      {
          
    $fileName addslashes($fileName);
      }
       include 
    'library/config.php';
       include 
    'library/opendb.php';
       
       
    $query "INSERT INTO upload (name, size, type, content ) ".
       
    "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
        
    mysql_query($query) or die('Error, query failed'); 
       include 
    'library/closedb.php';
       
       echo 
    "<br>File $fileName uploaded<br>";
       } 
       
    ?>
    این هم برای دانلود کردن فایله از دیتابیس
    PHP:
    <?php
      
    if(isset($_GET['id'])) 
      {
      
    // if id is set then get the file with the id from database
      
      
    include 'library/config.php';
      include 
    'library/opendb.php';     $id    $_GET['id'];
       
    $query "SELECT name, type, size, content " .
                
    "FROM upload WHERE id     = '$id'";
       
       
    $result mysql_query($query) or die('Error, query failed');
       list(
    $name$type$size$content) =                                  mysql_fetch_array($result);
         
    header("Content-length: $size");
       
    header("Content-type: $type");
       
    header("Content-Disposition: attachment; filename=$name");
       echo 
    $content;
       include 
    'library/closedb.php'
       exit;
       }
       
    ?>
    همه مخلفات رو نزاشتم خودتون فهمیدید که کدوم ها


    راستی روش های دیگری هم هست این راحت ترین نوعش هست
     
  2. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    این هم یه کد اماده و کامل
    امید وارم به دردتون خورده باشه
    چون این سوال رو اینجا خیلی دیدم و به جواب عملی کسی نرسوندش

    دانلود

    این روش اپلود فایل شاید در مواقعی که بازدید بالا باشه یکم به سرور فشار بیاره ولی از نظر امنیتی حرف نداره
     
  3. peiman

    peiman Registered User

    تاریخ عضویت:
    ‏23 فوریه 2003
    نوشته ها:
    1,544
    تشکر شده:
    20
    ممنون اما اصلا توجیه منطقی نداره!!
    امنیت فایلها رو با روش ذیگه میشه فراهم کرد!! فشار خیلی زیادی میاره!!
     
  4. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    ببین فشار خیلی نیست
    همین الان پرشین تولز همین اواتور هاش تماما روی دیتابیس هست با این همه بازدید و یوزر
    ولی مسائل امنیتیش در هر نوع آپلودی حتی اجازه آپلود فایل php به یوزر ساده رو هم بدیم مشکلی پیش نمی اره

    مطمننا اگر بد بود برنامه های بزرگ از این روش استفاده نمی کردند
    ولی خوبه در کنارش بهبرنامه اجازه استفاده از فایل هم بدیم
     
  5. hmsn

    hmsn کاربر تازه وارد

    تاریخ عضویت:
    ‏17 آگوست 2006
    نوشته ها:
    196
    تشکر شده:
    0
    محل سکونت:
    تو يه خونمون
    آقا حامد ممنون از اينكه زحمت كشيديد عالي بود
    حتما از اين روش استفاده مي كنيم به نظر بدون مشكل مياد
     
  6. peiman

    peiman Registered User

    تاریخ عضویت:
    ‏23 فوریه 2003
    نوشته ها:
    1,544
    تشکر شده:
    20
    شوخی میکنی؟!
    آواتار ها رو میریزه تو db
    اگه اینطوری باشه من نظرم عوض شده!!
    البته آواتارها حجمشون خیلی کمه!!
    اما اتچ چطور!؟ اونا رو هم میریزه تو دیتا بیس!!؟
     
  7. boxilink
  8. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    ویبالتین یعنی همین برنامه انجمن
    اتچ ها و آواتور هارو به صورت دیفالت میریزه توی دیتابیس و براسا لینک ها معلومه اینجا هنوز هم روی دیتابیس هست
    ولی امکان تغییر و ریختن رو هاست رو هم داره

    ولی خیلی سایت های بزرگ این کار رو می کنند
    مشکلی نداره بابا :d
     
  9. najandz

    najandz کاربر تازه وارد

    تاریخ عضویت:
    ‏15 آگوست 2007
    نوشته ها:
    12
    تشکر شده:
    1
    حامد عزیز مرسی
    ایا این کد برای پروفایل هم عمل می کند یعنی برای گذاشتن عکس برای ?user




    مرسی





     
  10. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    خوب نه دیگه ببین برای این اخرین قسمت کد هارو ببینی header برای دانلود خورده
    برای کارهای خودت باید header هارو عوض کنی

    تست کن کاری نداره
     
  11. najandz

    najandz کاربر تازه وارد

    تاریخ عضویت:
    ‏15 آگوست 2007
    نوشته ها:
    12
    تشکر شده:
    1
    حامد عزیز من چند جا کد ایراد دارم

    encrypt?

    چه شکلی پس فایل فرم ارسال به php

    می شود

    دیگه اینکه می شود خوههش کنم اسکردپت کامل برام ارسال کنید :blush:

    ضروری



     
  12. peiman

    peiman Registered User

    تاریخ عضویت:
    ‏23 فوریه 2003
    نوشته ها:
    1,544
    تشکر شده:
    20
    گفت که!!
    برای پروفایل چون عکس نشون داده میشه و نباید دانلود بشه باید هیدر ها رو عوض کنی!!

    کد کامل رو هم تو پست دوم قرار داده!!
     
  13. hba

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    ببین من متد کلی برای خودم می دونم گذاشتم
    دیگه باید خودت بر اسا نیازت بالا پایینش کنی

    اخرش هم برو phpclasses.org یه کلاس اماده اش رو دانلود کن کاری نداره یا حتی google
    ولی برای فهم کاری چون مهمش دیتابیسش بود گذاشتم
     
  14. avajang.com .leftavajang.com.right
  15. miladmovie

    miladmovie مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏25 دسامبر 2002
    نوشته ها:
    1,936
    تشکر شده:
    2
  16. najandz

    najandz کاربر تازه وارد

    تاریخ عضویت:
    ‏15 آگوست 2007
    نوشته ها:
    12
    تشکر شده:
    1
    لطفا در ئورد دنلود فایل کمکم کند گرفت از دیتا بیس