ركن لغات البرمجه : :: لغات البرمجه php و asp و Ajax و Java و غيرها

درس رفع الملفات وتخزينها فى قاعدة البيانات

Like Tree5معجبون
  • 4 أضيفت بواسطة Arab Coders Project
  • 1 أضيفت بواسطة Arab Coders Project
صورة 'Arab Coders Project' الرمزية
Arab Coders Project
مطور الويب
تاريخ الإنضمام: 22 - 03 - 2007
رقم العضوية : 33367
الدولة : EGYPT
المشاركات: 4,567
قديمة 29 - 07 - 2009, 17:57
المشاركة 1
نشاط Arab Coders Project
  • قوة السمعة : 2194
  • الإعجاب: 537
    Iconrote درس رفع الملفات وتخزينها فى قاعدة البيانات


    بسم الله الرحمن الرحيم

    هذ درس عن كيفية حفظ الملفات فى قاعدة البيانات من صور وملفات مختلفة doc-pdf>>>>الخ

    أولا: نقوم بعمل قاعدة بيانات ونسوى جدول بالحقول الاتية

    1. id : الترميز الرقمى لكل ملف
    2. name : اسم الملف
    3. type :نوع محتوى الملف
    4. size :حجم الملف
    5. content : الملف نفسه

    بالنسبة لحقل الcontent لابد ان يكون من النوع blob لان هذا هو النوع المناسب لتخزين الملفات

    درس رفع الملفات وتخزينها فى قاعدة البيانات




    رمز 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)
    ); 


    رفع الملفات وتخزينها فى قاعدة البيانات تتطلب خطوتين

    1-رفع الملفات على السيرفر
    2-ارسالها وتخزينها فى قاعدة البيانات


    لرفع الملفات محتاجين فورم لرفع الملفات


    نسوى ملف رفع الملفات وليكن upload.php

    رمز PHP:
    <form action="process.php" 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

    ملاحظات:

    لاحظ اننا كتبنا enctype="multipart/form-data" وهى مهمه لرفع الملفات

    وحددنا حجم الملف المراد رفعه كحد اقصى MAX_FILE_SIZE للملف الواحد 2000000


    بعد ما نرفع الملف على السيرفر محتاجين نقرأه حتى نعطيه امر لتخزينه فى قاعدة البيانات

    اولا:

    نشير للتالى مثل ما انت شايف فى الفورم فوق

    اسم المدخل input هو userfile

    وراح نسوى


    رمز Code:
    $_FILES['userfile']['name']
    اسم الملف الاصلى على السيرفر

    رمز Code:
    $_FILES['userfile']['type']
    نوعه وليكن مثلا لو الملف اللى رفعناه صوره راح يكون نوعه image/gif


    رمز Code:
    $_FILES['userfile']['size']
    حجم الملف بالبايت

    رمز Code:
    $_FILES['userfile']['tmp_name']
    اسم الملف المؤقت على السيرفر قبل تخزينه فى قاعدة البيانات

    رمز Code:
    $_FILES['userfile']['error']
    رسالة خطأ


    ونسوى ملفنا ونسميه process.php



    رمز 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>";
    }
    ?>

    شرح الكود:


    اولا: قرأنا الملف من السيرفر بكافة بياناته
    ثانيا: فتحنا الملف وقرأنا محتوياته تمهيدا لادراجه فى القاعدة
    ثالثا: اضفنا دالة addslashes لتجنب اى اخطاء فى اضافة الملف وتخزينه فى القاعدة خصوصا اذا كان به الرموز ' او "

    رابعا: عملنا انكلود لملفات الاتصال بالقاعدة

    خامسا: ثم استخدمنا امر الادخال insert لتخزين البيانات فى القادعدة وراسلنا الاستعلام query


    بهيك انتهى الدرس

    تحياتى


    #########
    # محمد أمين #
    #########
    مــبـــرمج PHP


    برمجياتى: اسكربت AraDownPro | مشروع مطورى الويب العربى
    مشروع البحث عن مبرمج او مطور

    مشروع مطورى الويب العربى لتعليم برمجة وتصميم المواقع
    www.advphp.com
    قديمة 29 - 07 - 2009, 18:10
    المشاركة 2
    صورة 'omardealo' الرمزية
    omardealo
    ||| عضو التميز |||
    تاريخ الإنضمام: 24 - 10 - 2006
    رقم العضوية : 27111
    الدولة : مصر
    المشاركات: 11,770
    افتراضي
    الله يجزيك خير
    بس حتى يكون الدرس مكتمل
    يرجى وضع كود تحميل واستعراض الملف المرفق
    قديمة 29 - 07 - 2009, 18:22
    المشاركة 3
    Sniper-Y
    Banned
    تاريخ الإنضمام: 31 - 12 - 2008
    رقم العضوية : 63700
    الدولة : الجزائر
    المشاركات: 1,060
    افتراضي
    جزاك الله خير
    لكن لم تحدد اين ترفع الملفات ؟
    قديمة 29 - 07 - 2009, 18:44
    المشاركة 4
    صورة 'Arab Coders Project' الرمزية
    Arab Coders Project
    مطور الويب
    تاريخ الإنضمام: 22 - 03 - 2007
    رقم العضوية : 33367
    الدولة : EGYPT
    المشاركات: 4,567
    افتراضي
    الله يجزيك خير
    بس حتى يكون الدرس مكتمل
    يرجى وضع كود تحميل واستعراض الملف المرفق
    الفورم واضعه ياعمر

    تختار الملف المراد رفعه وهيترفع

    وانا عدلت الملف عشان للى يحب يجربه




    وده بعد تخزينه




    لانى عامله من اسكربت

    فده الكود معدل فقط تغير بيانات الاتصال وخلاص

    رمز PHP:
    <?php
    $localhost
    ="localhost";
    $user="root";
    $pass="root";
    $db="table";
    $table="tut";

    mysql_connect($localhost,$user,$pass,$db);
    mysql_select_db($db);


    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);
    }



    $query "INSERT INTO tut (name, size, type, content ) ".
    "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";

    mysql_query($query) or die('Error, query failed');
    ;

    echo 
    "<br>File $fileName uploaded<br>";
    }
    ?>
    الملفات المرفقة
    نوع الملف : txt process.txt (842 بايت, عدد مرات المشاهدة 155 مرة)

    #########
    # محمد أمين #
    #########
    مــبـــرمج PHP


    برمجياتى: اسكربت AraDownPro | مشروع مطورى الويب العربى
    مشروع البحث عن مبرمج او مطور

    مشروع مطورى الويب العربى لتعليم برمجة وتصميم المواقع
    www.advphp.com
    قديمة 29 - 07 - 2009, 18:45
    المشاركة 5
    صورة 'Arab Coders Project' الرمزية
    Arab Coders Project
    مطور الويب
    تاريخ الإنضمام: 22 - 03 - 2007
    رقم العضوية : 33367
    الدولة : EGYPT
    المشاركات: 4,567
    افتراضي
    جزاك الله خير
    لكن لم تحدد اين ترفع الملفات ؟
    نحن ياغالى بدنا نخزن الملف فى قاعدة البيانات وليس السيرفر

    فبنسوى ملف مؤقت ليخزن الملف $tmp_name ثم ندرجه ونخزنه فى القاعدة

    #########
    # محمد أمين #
    #########
    مــبـــرمج PHP


    برمجياتى: اسكربت AraDownPro | مشروع مطورى الويب العربى
    مشروع البحث عن مبرمج او مطور

    مشروع مطورى الويب العربى لتعليم برمجة وتصميم المواقع
    www.advphp.com
    قديمة 29 - 07 - 2009, 19:04
    المشاركة 6
    صورة 'omardealo' الرمزية
    omardealo
    ||| عضو التميز |||
    تاريخ الإنضمام: 24 - 10 - 2006
    رقم العضوية : 27111
    الدولة : مصر
    المشاركات: 11,770
    افتراضي
    الفورم واضعه ياعمر

    تختار الملف المراد رفعه وهيترفع

    وانا عدلت الملف عشان للى يحب يجربه




    وده بعد تخزينه




    لانى عامله من اسكربت

    فده الكود معدل فقط تغير بيانات الاتصال وخلاص

    رمز PHP:
    <?php
    $localhost
    ="localhost";
    $user="root";
    $pass="root";
    $db="table";
    $table="tut";

    mysql_connect($localhost,$user,$pass,$db);
    mysql_select_db($db);


    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);
    }



    $query "INSERT INTO tut (name, size, type, content ) ".
    "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";

    mysql_query($query) or die('Error, query failed');
    ;

    echo 
    "<br>File $fileName uploaded<br>";
    }
    ?>
    اخى الكريم هذا ملف الرفع والفورم ايضا للرفع وهذا مفهوم
    لكن انا اتكلم عن الاستعراض (الاستعلام من القاعدة)
    بعد رفع الملف ؟ كيف اجعله متاح للتحميل ؟ او كيف استعرضه من قاعدة البيانات ؟
    ان شاء الله تكون كدا وضحت
    قديمة 29 - 07 - 2009, 19:26
    المشاركة 7
    صورة 'Arab Coders Project' الرمزية
    Arab Coders Project
    مطور الويب
    تاريخ الإنضمام: 22 - 03 - 2007
    رقم العضوية : 33367
    الدولة : EGYPT
    المشاركات: 4,567
    Iconrote
    اخى الكريم هذا ملف الرفع والفورم ايضا للرفع وهذا مفهوم
    لكن انا اتكلم عن الاستعراض (الاستعلام من القاعدة)
    بعد رفع الملف ؟ كيف اجعله متاح للتحميل ؟ او كيف استعرضه من قاعدة البيانات ؟
    ان شاء الله تكون كدا وضحت
    اها

    ده الخاص بتحميل الملف مره اخرى من القاعدة

    حطه فى ملف الprocess

    رمز PHP:
    <html>
    <head>
    <title>Download File From MySQL</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <html>
    <head>
    <title>Download File From MySQL</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <?php




    $query 
    "SELECT id, name FROM tut";
    $result mysql_query($query) or die('Error, query failed');
    if(
    mysql_num_rows($result) == 0)
    {
    echo 
    "db is null <br>";
    }
    else
    {
    while(list(
    $id$name) = mysql_fetch_array($result))
    {
    ?>

    <a href="download.php?id=<?php=$id;?>"><?php=$name;?></a> 

    <br>

    <?php
    mysql_close
    ();
    ?>

    </body>
    </html>

    #########
    # محمد أمين #
    #########
    مــبـــرمج PHP


    برمجياتى: اسكربت AraDownPro | مشروع مطورى الويب العربى
    مشروع البحث عن مبرمج او مطور

    مشروع مطورى الويب العربى لتعليم برمجة وتصميم المواقع
    www.advphp.com
    قديمة 29 - 07 - 2009, 19:37
    المشاركة 8
    صورة 'kasmi2004' الرمزية
    kasmi2004
    :: عضو نشيط ::
    تاريخ الإنضمام: 16 - 02 - 2006
    رقم العضوية : 20180
    الدولة : أبو الدنيا أو جدها
    المشاركات: 1,922
    • أرسل رسالة بواسطة MSN إلى kasmi2004
    • أرسل رسالة بواسطة Yahoo إلى kasmi2004
    • أرسل رسالة بواسطة Skype™ إلى kasmi2004
    افتراضي
    السلام عليكم و رحمة الله و بركاته
    اما بعد

    درس جميل من اخ اجمل - و لاكن :

    رمز PHP:

    $content 
    addslashes($content); 

    if(!
    get_magic_quotes_gpc()) 

        
    $fileName addslashes($fileName); 

    الا تعتقد بان هذه السطور لا فائدة منها ؟
    تقول للحماية - حماية ماذا ؟
    محتوى الملف راح يتم تخزينه على شكل داتا مجزئة - و لا يمكن تنفيذ محتواه او عرضه على المتصفح الا بدالة header
    مثال :
    رمز PHP:
    @header('Content-Disposition: filename=123.gif'); 
    يعني فرضنا على المتصفح امتداد الملف
    فاين هي الخطورة ؟
    لله درك يا ترايد 2006 - 2008
    و الوداع يا من اخذت جزء من عمري
    رحل خلال : 2009/08/31
    قديمة 29 - 07 - 2009, 19:53
    المشاركة 9
    صورة 'Arab Coders Project' الرمزية
    Arab Coders Project
    مطور الويب
    تاريخ الإنضمام: 22 - 03 - 2007
    رقم العضوية : 33367
    الدولة : EGYPT
    المشاركات: 4,567
    افتراضي
    السلام عليكم و رحمة الله و بركاته
    اما بعد

    درس جميل من اخ اجمل - و لاكن :

    رمز PHP:

    $content 
    addslashes($content); 

    if(!
    get_magic_quotes_gpc()) 

        
    $fileName addslashes($fileName); 

    الا تعتقد بان هذه السطور لا فائدة منها ؟
    تقول للحماية - حماية ماذا ؟
    محتوى الملف راح يتم تخزينه على شكل داتا مجزئة - و لا يمكن تنفيذ محتواه او عرضه على المتصفح الا بدالة header
    مثال :
    رمز PHP:
    @header('Content-Disposition: filename=123.gif'); 
    يعني فرضنا على المتصفح امتداد الملف
    فاين هي الخطورة ؟
    وعليكم السلام ورحمة الله وبركاته

    تعجبنى مشاركاتك اخى قاسمى خصوصا لو بتشارك بخبرتك فيها

    القصة انا قرأتها عن هذه الدالة http://www.w3schools.com/php/func_string_addslashes.asp



    ولو فرضا اننا سمينا الملف save'.txt واردنا رفعه

    قد يفشل الملف فى رفعه

    لكن انا جربته الحين واترفع

    بس من غير اسم

    omardealo معجب بهذا.

    #########
    # محمد أمين #
    #########
    مــبـــرمج PHP


    برمجياتى: اسكربت AraDownPro | مشروع مطورى الويب العربى
    مشروع البحث عن مبرمج او مطور

    مشروع مطورى الويب العربى لتعليم برمجة وتصميم المواقع
    www.advphp.com
    قديمة 29 - 07 - 2009, 20:04
    المشاركة 10
    صورة 'kasmi2004' الرمزية
    kasmi2004
    :: عضو نشيط ::
    تاريخ الإنضمام: 16 - 02 - 2006
    رقم العضوية : 20180
    الدولة : أبو الدنيا أو جدها
    المشاركات: 1,922
    • أرسل رسالة بواسطة MSN إلى kasmi2004
    • أرسل رسالة بواسطة Yahoo إلى kasmi2004
    • أرسل رسالة بواسطة Skype™ إلى kasmi2004
    افتراضي
    وعليكم السلام ورحمة الله وبركاته

    تعجبنى مشاركاتك اخى قاسمى خصوصا لو بتشارك بخبرتك فيها

    القصة انا قرأتها عن هذه الدالة http://www.w3schools.com/php/func_string_addslashes.asp



    ولو فرضا اننا سمينا الملف save'.txt واردنا رفعه

    قد يفشل الملف فى رفعه

    لكن انا جربته الحين واترفع

    بس من غير اسم

    لماذا اصلا تحفظ مسمى الملف بامتداده ؟ الافضل جزءه لكي تتحكم فيه بكل سلاسة
    لله درك يا ترايد 2006 - 2008
    و الوداع يا من اخذت جزء من عمري
    رحل خلال : 2009/08/31
    قديمة 29 - 07 - 2009, 21:17
    المشاركة 11
    صورة 'omardealo' الرمزية
    omardealo
    ||| عضو التميز |||
    تاريخ الإنضمام: 24 - 10 - 2006
    رقم العضوية : 27111
    الدولة : مصر
    المشاركات: 11,770
    قديمة 29 - 07 - 2009, 21:21
    المشاركة 12
    احمد يوسف
    :: عضو نشيط ::
    تاريخ الإنضمام: 05 - 12 - 2008
    رقم العضوية : 63273
    المشاركات: 430
    افتراضي
    شكرااا لك
    قديمة 05 - 08 - 2009, 18:32
    المشاركة 13
    صورة 'ننوس' الرمزية
    ننوس
    :: عضو نشيط ::
    تاريخ الإنضمام: 15 - 12 - 2005
    رقم العضوية : 14140
    المشاركات: 225
    افتراضي
    اخى الكريم مشكور على الدرس

    لكن فى جزء ناقص بالنسبة لى

    اريد ان يتم ادراج رابط الملف بعد رفعه

    مثال :

    تم تحميل الملف بنجاح .. وهذا الرابط

    http://www.sitename.com/upload/file.jpg(www.sitename.com/upload/file.jpg)

    وعند الضغط عليه يتم استعراض الملف


    وشكرا لك
    قال رسول الله صلى الله عليه و سلم
    " مَنْ أَكْثَرَ الِاسْتِغْفَارَ جَعَلَ اللَّهُ لَهُ مِنْ كُلِّ هَمٍّ فَرَجاً ، وَ مِنْ كُلِّ ضِيقٍ مَخْرَجاً ، وَ رَزَقَهُ مِنْ حَيْثُ لَا يَحْتَسِبُ "
    صدق رسول الله صلى الله عليه و سلم
    قديمة 28 - 06 - 2014, 19:10
    المشاركة 14
    صورة 'إبراهيم سالم' الرمزية
    إبراهيم سالم
    :: تطوير المنتديات ::
    تاريخ الإنضمام: 12 - 01 - 2006
    رقم العضوية : 16145
    الدولة : http://forum.sa3eka.com/
    العمر: 29
    المشاركات: 5,258
    افتراضي رد : درس رفع الملفات وتخزينها فى قاعدة البيانات
    استاذي الكريم
    اتمنى منك وضع شرح لنا كيف ابي اعرض الملفات للزائر بالموقع
    حيث ملفاتي عبارة عن صور
    qJJI Jgω∫ ɔρζρ qJJI ƔĮ qJĮ Ɣ


    بإذن الله وتوفيقه جاري العمل على تحويل vbulletin 3 إلى wordpress 4
    convert vbulletin forum to wordpress blog
    العمل متوقف بسبب الدراسة ومشروع تخرجي
    5 %
    من يحب يساعدني يضيفني على skype: ibraheem.s
    قديمة 01 - 07 - 2014, 03:01
    المشاركة 15
    صورة 'Ahm3d Moham3d' الرمزية
    Ahm3d Moham3d
    :: مشرف ::
    :: مشاكل لغات البرمجة ::
    تاريخ الإنضمام: 02 - 03 - 2011
    رقم العضوية : 93553
    الدولة : حماك الله يا مــصــر
    العمر: 24
    المشاركات: 3,935
    • أرسل رسالة بواسطة Skype™ إلى Ahm3d Moham3d
    افتراضي رد : درس رفع الملفات وتخزينها فى قاعدة البيانات
    الموضوع قديم الله يبارك فيك

    تقدر تضع استفسارك أو مشكلتك في ركن

    ركن مشاكل وحلول واستفسارات لغات البرمجه

    يغلق
    .
    لا إِلَهَ إِلَّا أَنْتَ سُبْحَانَكَ. إِنِّي كُنتُ مِنَ الظَّالِمِينَ

    سكايبي : Ahm3dTraidnt
    مغلق
    العلامات المرجعية

    درس رفع الملفات وتخزينها فى قاعدة البيانات


    برمجة سكريبت اتصال بينا عن طريق php شرح دالة implode وكيفية التعامل معها

    أدوات الموضوع
    طرق العرض



    الساعة معتمدة بتوقيت جرينتش +3 . الساعة الآن : 05:52.
    المعهد غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
    فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
    التعليقات المنشورة لا تعبر عن رأي معهد ترايدنت ولا نتحمل أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

    جميع الحقوق محفوظة Traidnt 2015
    • 009669200920037
    • 00966138648289
    • 2051033691
    Powered by vBulletin® Version 3.8.7 .Copyright ©2000 - 2015, Jelsoft Enterprises Ltd
    SEO by vBSEO ©2011, Crawlability, Inc.