صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 17

الموضوع: إنشاء وفك ملفات Zip على المزودات البعيدة - Remote Servers

  1. إنشاء وفك ملفات Zip على المزودات البعيدة - Remote Servers



    سنستخدم في هذه الأمثلة كلاس (PclZip) ـ phpConcept Library - Zip Module 2.3

    يمكن تنزيلها مباشرة من هنا:
    http://www.phpconcept.net/download.p...pclzip-2-3.zip

    أو من هنا:
    http://www.phpconcept.net/pclzip/index.en.php#download

    دليل المستخدم:
    http://www.phpconcept.net/pclzip/man/en/index.php





    __________________
    (( وَاهًا لهذه الّلغة .. التي أصبحت بينَ أعجميّ ُينادي بوَأْدِها، و عربيٍّ يعملُ على كَيدِها.
    ومن نَظرَ في بطونِ تلكَ الكتبِ التي تُتُرجَمُ اليومَ رأى هذه الغَادةَ الشرقيةَ
    و هي على فراشِ موتِها تَندِبُ خِدرًا قد ابتلذته الأقلام، و سِترًا قد هتكته الأوهام،
    و قد فتحوا لها في بُطونِ هذه الكتبِ قبورًا، وخاطُوا لها من تلك الصُحُـفِ أكفانًا،
    و هَيَّأُوا من هذه الأقلامِ أعوادًا.
    و ما هو إلا أن يُثنِيَ ذلكَ الغربيُّ بدعوتِه حتى يُسرِعَ إلى جنازتِها أهلُها و ذو قرابتِها ))

    حافظ إبراهيم في مقدمة كتاب (البؤساء)

    [ من تغريب الألفاظ العلمية للعلامة : بكر بن عبد الله أبو زيد ]
    ____________________________________________
    سبحانك اللهم و بحمدك .. أشهد أن لا إله إلا أنت .. أستغفرك و أتوب إليك.




  2. أولا: إنشاء ملف Zip لملف أو أكثر أو لكافة محتويات مجلد ما:

    في هذا المثال سوف نقوم بضغط المجلد www بجميع محتوياته في ملف MyBackup.zip:

    كود PHP:
    <?php

    include('pclzip.lib.php');

    // تعيين اسم الملف المضغوط
    $new_zip= new PclZip('MyBackup.zip');

    // ضغط كافة الملفات  الموجودة داخل المجلد التالي على المزود
    $file_list $new_zip->create('www/');

    if (
    $file_list == 0
    {
    die(
    "Error : ".$new_zip->errorInfo(true));
    }

    print 
    "<script>alert ('تم إنشاء النسخة الاحتياطية بنجاح');</script>";
    print 
    "<br><br><p align=center><b> تم إنشاء النسخة الاحتياطية بنجاح </b></p>"

    ?>







  3. #3
    مُجَاهِد سابقاً
    تاريخ التسجيل
    Apr 2004
    المشاركات
    12,000


    أرجوا التوضيح أكثر ..

    لم أفهم أي شيء بالشرح..

    وهل هذه الطريقة هي لضغط اي ملف موجود موقع ؟؟





    __________________
    استخدم خاصية تنبيه المشرفين للضرورة وعند ملاحظة موضوع يخالف قوانين منتديات سوالف وسيتم مراجعة الموضوع او المشاركة المبلغ عنها على الفور



  4. ثانيا: استعراض محتويات ملف Zip :

    سنقوم الآن بعرض محتويات الملف الذي أنشأناه مسبقا ، مع عرض الحجم المضغوط والحجم الحقيقي لكل ملف ضمن الملف Zip.

    كود PHP:
    <?php 

    include_once('pclzip.lib.php');

    // تعيين اسم الملف المضغوط 
    $zip = new PclZip('MyBackup.zip');
      
      if ((
    $list $zip->listContent()) == 0) {
        die(
    "Error : ".$zip->errorInfo(true));
      }
      
      for (
    $i=0$i<sizeof($list); $i++) {
        for(
    reset($list[$i]); $key key($list[$i]); next($list[$i])) {
          echo 
    "File($i)-[$key] = ".$list[$i][$key]."<br>";
        }
        echo 
    "<hr noshade color=#808080>";
      }

    print 
    "<script>alert (' انتهت لائحة الملفات ');</script>"
    print 
    "<br><br><p align=center><b> النهـــايــة </b></p>"

    ?>









  5. ثالثا: فك واسترجاع ملف Zip إلى الموقع مرة أخرى:

    ويمكنك تعيين المجلد المطلوب فك الملفات فيه كما تحب ..

    كود PHP:
    <?php 

    include('pclzip.lib.php'); 

    //  الملف المضغوط المراد فكه 
    $zip = new PclZip('MyBackup.zip');

    // www فك إلى المجلد المسمى 
    if ($archive->extract(PCLZIP_OPT_PATH'www') == 0

    // في حال فشل عملية الفك 
    die("Error : ".$archive->errorInfo(true)); 


    print 
    "<script>alert (' تمت عملية استخراج الملفات بنجاح ');</script>"
    print 
    "<br><br><p align=center><b> تمت عملية استخراج الملفات بنجاح </b></p>"

    ?>









  6. و هاهي الملفات الأمثلة السابقة في ملف مضغوط مع ملف الكلاس نفسه.

    ولا حاجة لتنزيله إذًا من الرابط الأول لغير الخبراء إلا لمن أراد التحديث والتفاصيل.

    (تم تعديل خطأ في الشيفرة المصدرية)






    الملفات المرفقة الملفات المرفقة

  7. #7
    عضو فعال جدا
    تاريخ التسجيل
    Feb 2003
    المشاركات
    2,047


    شكرا لك اخ ابو حازم فعلا Library رائعة و مفيدة


    طريقة اخرى


    كود PHP:
    class zipfile
    {
        
    /**
         * Array to store compressed data
         *
         * @var  array    $datasec
         */
        
    var $datasec      = array();

        
    /**
         * Central directory
         *
         * @var  array    $ctrl_dir
         */
        
    var $ctrl_dir     = array();

        
    /**
         * End of central directory record
         *
         * @var  string   $eof_ctrl_dir
         */
        
    var $eof_ctrl_dir "\x50\x4b\x05\x06\x00\x00\x00\x00";

        
    /**
         * Last offset position
         *
         * @var  integer  $old_offset
         */
        
    var $old_offset   0;


        
    /**
         * Converts an Unix timestamp to a four byte DOS date and time format (date
         * in high two bytes, time in low two bytes allowing magnitude comparison).
         *
         * @param  integer  the current Unix timestamp
         *
         * @return integer  the current date in a four byte DOS format
         *
         * @access private
         */
        
    function unix2DosTime($unixtime 0) {
            
    $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);

            if (
    $timearray['year'] < 1980) {
                
    $timearray['year']    = 1980;
                
    $timearray['mon']     = 1;
                
    $timearray['mday']    = 1;
                
    $timearray['hours']   = 0;
                
    $timearray['minutes'] = 0;
                
    $timearray['seconds'] = 0;
            } 
    // end if

            
    return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
                    (
    $timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
        } 
    // end of the 'unix2DosTime()' method


        /**
         * Adds "file" to archive
         *
         * @param  string   file contents
         * @param  string   name of the file in the archive (may contains the path)
         * @param  integer  the current timestamp
         *
         * @access public
         */
        
    function addFile($data$name$time 0)
        {
            
    $name     str_replace('\\''/'$name);

            
    $dtime    dechex($this->unix2DosTime($time));
            
    $hexdtime '\x' $dtime[6] . $dtime[7]
                      . 
    '\x' $dtime[4] . $dtime[5]
                      . 
    '\x' $dtime[2] . $dtime[3]
                      . 
    '\x' $dtime[0] . $dtime[1];
            eval(
    '$hexdtime = "' $hexdtime '";');

            
    $fr   "\x50\x4b\x03\x04";
            
    $fr   .= "\x14\x00";            // ver needed to extract
            
    $fr   .= "\x00\x00";            // gen purpose bit flag
            
    $fr   .= "\x08\x00";            // compression method
            
    $fr   .= $hexdtime;             // last mod time and date

            // "local file header" segment
            
    $unc_len strlen($data);
            
    $crc     crc32($data);
            
    $zdata   gzcompress($data);
            
    $zdata   substr(substr($zdata0strlen($zdata) - 4), 2); // fix crc bug
            
    $c_len   strlen($zdata);
            
    $fr      .= pack('V'$crc);             // crc32
            
    $fr      .= pack('V'$c_len);           // compressed filesize
            
    $fr      .= pack('V'$unc_len);         // uncompressed filesize
            
    $fr      .= pack('v'strlen($name));    // length of filename
            
    $fr      .= pack('v'0);                // extra field length
            
    $fr      .= $name;

            
    // "file data" segment
            
    $fr .= $zdata;

            
    // "data descriptor" segment (optional but necessary if archive is not
            // served as file)
            
    $fr .= pack('V'$crc);                 // crc32
            
    $fr .= pack('V'$c_len);               // compressed filesize
            
    $fr .= pack('V'$unc_len);             // uncompressed filesize

            // add this entry to array
            
    $this -> datasec[] = $fr;

            
    // now add to central directory record
            
    $cdrec "\x50\x4b\x01\x02";
            
    $cdrec .= "\x00\x00";                // version made by
            
    $cdrec .= "\x14\x00";                // version needed to extract
            
    $cdrec .= "\x00\x00";                // gen purpose bit flag
            
    $cdrec .= "\x08\x00";                // compression method
            
    $cdrec .= $hexdtime;                 // last mod time & date
            
    $cdrec .= pack('V'$crc);           // crc32
            
    $cdrec .= pack('V'$c_len);         // compressed filesize
            
    $cdrec .= pack('V'$unc_len);       // uncompressed filesize
            
    $cdrec .= pack('v'strlen($name) ); // length of filename
            
    $cdrec .= pack('v');             // extra field length
            
    $cdrec .= pack('v');             // file comment length
            
    $cdrec .= pack('v');             // disk number start
            
    $cdrec .= pack('v');             // internal file attributes
            
    $cdrec .= pack('V'32 );            // external file attributes - 'archive' bit set

            
    $cdrec .= pack('V'$this -> old_offset ); // relative offset of local header
            
    $this -> old_offset += strlen($fr);

            
    $cdrec .= $name;

            
    // optional extra field, file comment goes here
            // save to central directory
            
    $this -> ctrl_dir[] = $cdrec;
        } 
    // end of the 'addFile()' method


        /**
         * Dumps out file
         *
         * @return  string  the zipped file
         *
         * @access public
         */
        
    function file()
        {
            
    $data    implode(''$this -> datasec);
            
    $ctrldir implode(''$this -> ctrl_dir);

            return
                
    $data .
                
    $ctrldir .
                
    $this -> eof_ctrl_dir .
                
    pack('v'sizeof($this -> ctrl_dir)) .  // total # of entries "on this disk"
                
    pack('v'sizeof($this -> ctrl_dir)) .  // total # of entries overall
                
    pack('V'strlen($ctrldir)) .           // size of central dir
                
    pack('V'strlen($data)) .              // offset to start of central dir
                
    "\x00\x00";                             // .zip file comment length
        
    // end of the 'file()' method
        

        /**
         * A Wrapper of original addFile Function
         *
         * Created By Hasin Hayder at 29th Jan, 1:29 AM
         *
         * @param array An Array of files with relative/absolute path to be added in Zip File
         *
         * @access public
         */
        
    function addFiles($files /*Only Pass Array*/)
        {
            foreach(
    $files as $file)
            {
            if (
    is_file($file)) //directory check
            
    {
                
    $data implode("",file($file));
                        
    $this->addFile($data,$file);
                    }
            }
        }
        
        
    /**
         * A Wrapper of original file Function
         *
         * Created By Hasin Hayder at 29th Jan, 1:29 AM
         *
         * @param string Output file name
         *
         * @access public
         */
        
    function output($file)
        {
            
    $fp=fopen($file,"w");
            
    fwrite($fp,$this->file());
            
    fclose($fp);
        }

        

    // end of the 'zipfile' class 
    طريقة الإستعمال

    كود PHP:
    include("zip.lib.php");
    $ziper = new zipfile();
    $ziper->addFiles(array("m.pdf","file.png"));
    $ziper->output("zip2.zip"); 






    __________________
    -{Only God Can Judge Me}-
    القانون فوق الجميع و الجميع يموت بالجوع

  8. #8
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 1999
    المشاركات
    483


    شكرا لك استاذ ابو حازم .. فعلا رائعة و مفيدة








  9. نعم يا عزيزي (Dr-dre67) توجد طرق كثيرة ولكن zip.lib.php بسيطة للغاية وميزاتها أقل.
    وعلى كل حال يوجد zip.lib2 Class المطورة ويوجد PHPZip v1.2 Class و EasyZIP class
    و TAR/GZIP/BZIP2/ZIP Archive Classes 2.0 وغير ذلك ... تجدهم جميعا على موقع: PHPClasses.org


    ملاحظة بسيطة:

    يجب في كل الحالات توفر المكتبة zlib extensions الملحقة بـ php على المزود على كل الأحوال للتعامل مع ملفات Zip .

    وإلا فستخرج لك رسالة على المتصفح كالتالي:
    كود:
    Abort pclzip.lib.php : Missing zlib extensions






    __________________
    (( وَاهًا لهذه الّلغة .. التي أصبحت بينَ أعجميّ ُينادي بوَأْدِها، و عربيٍّ يعملُ على كَيدِها.
    ومن نَظرَ في بطونِ تلكَ الكتبِ التي تُتُرجَمُ اليومَ رأى هذه الغَادةَ الشرقيةَ
    و هي على فراشِ موتِها تَندِبُ خِدرًا قد ابتلذته الأقلام، و سِترًا قد هتكته الأوهام،
    و قد فتحوا لها في بُطونِ هذه الكتبِ قبورًا، وخاطُوا لها من تلك الصُحُـفِ أكفانًا،
    و هَيَّأُوا من هذه الأقلامِ أعوادًا.
    و ما هو إلا أن يُثنِيَ ذلكَ الغربيُّ بدعوتِه حتى يُسرِعَ إلى جنازتِها أهلُها و ذو قرابتِها ))

    حافظ إبراهيم في مقدمة كتاب (البؤساء)

    [ من تغريب الألفاظ العلمية للعلامة : بكر بن عبد الله أبو زيد ]
    ____________________________________________
    سبحانك اللهم و بحمدك .. أشهد أن لا إله إلا أنت .. أستغفرك و أتوب إليك.

  10. #10
    عضو جديد
    تاريخ التسجيل
    Feb 2004
    المشاركات
    23


    ممتاز جدا

    شكراً لك استاذ ابو حازم

    والشكر موصول للاستاذ Dr-dre67





    __________________
    Dealer!
    ------------------------------------
    ( إدعم موقع رتب - أول موقع عربي للإحصائيات )

  11. #11
    مُجَاهِد سابقاً
    تاريخ التسجيل
    Apr 2004
    المشاركات
    12,000


    لم أفهم شئياً من الموضوع ..

    ياريت لو شرح مختصر وبسيط .. يدخل للعقل بسرعة فائقة ..


    وخالص المودة ..





    __________________
    استخدم خاصية تنبيه المشرفين للضرورة وعند ملاحظة موضوع يخالف قوانين منتديات سوالف وسيتم مراجعة الموضوع او المشاركة المبلغ عنها على الفور



  12. الموضوع يا (مُجَاهِد) بكل بساطة أن تضغط ملفات مهمة من موقعك لتنزيلها سريعا مثلا، أو لعمل نسخة احتياطية لها،
    أو بالعكس .. إذا عندك ملفات كثيرة يمكنك ضغطها ورفعها على الموقع ، ومن ثم فك الضغط عنها.
    وكل ذلك يوفر وقتا كبيرا ، ففائدة الضغط عامة، وتعرفها ويعرفها الجميع.






  13. #13
    عضو نشيط جدا
    تاريخ التسجيل
    Dec 2003
    المشاركات
    413


    طيب اخوي بالنسبة لتراخيص الملفات بعد فك الضغط ؟؟
    لأن اغلب طرق الضغط بترجع ترخيص الملفات و المجلدات للـ444 وهذا يعن عمل مجهد بحيث انني افضل ان اقوم بتحميلها بدون ضغط على ان اعيد تراخيص الملفات ...





    __________________

    موقع شركة ديزاين بروف
    الماسنجر sa3di @ msn . com

    أرقام الهواتف:
    الشركة : 00213560170355

  14. #14
    عضو فعال جدا
    تاريخ التسجيل
    Oct 2003
    المشاركات
    2,775


    هذا السكربت وياي من فترة بس طريقة الإستعلام عن طريق الكلاسات للمتقدمين شوي
    تفضلوا نفس السكربت بس كاامل يعني رابط تستدعيه يعطيك كل شيء من لوحة تحكم و اوامر سهله

    http://www.phpconcept.net/download.p...zip-1-7-a2.zip

    اتمنى لكم التوفيق






  15. #15
    مُجَاهِد سابقاً
    تاريخ التسجيل
    Apr 2004
    المشاركات
    12,000


    اقتباس المشاركة الأصلية كتبت بواسطة أبو حازم الاسكندراني
    الموضوع يا (مُجَاهِد) بكل بساطة أن تضغط ملفات مهمة من موقعك لتنزيلها سريعا مثلا، أو لعمل نسخة احتياطية لها،
    أو بالعكس .. إذا عندك ملفات كثيرة يمكنك ضغطها ورفعها على الموقع ، ومن ثم فك الضغط عنها.
    وكل ذلك يوفر وقتا كبيرا ، ففائدة الضغط عامة، وتعرفها ويعرفها الجميع.
    اها .
    كذا فهمت ..
    بالفعل أكثر من رااائع ,,
    وهو مناسب لقواعد البيانات ..الكبيرة الحجم..

    وخالص المودة ..





    __________________
    استخدم خاصية تنبيه المشرفين للضرورة وعند ملاحظة موضوع يخالف قوانين منتديات سوالف وسيتم مراجعة الموضوع او المشاركة المبلغ عنها على الفور





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض