السلام عليكم

نحتاج أحيانا عند تصميم سكربت أو برنامج لإضافة ميزة جديدة او خاصية مميزة
فنضيف التحميل عن طريق عدة ملفات منها مثلا الملفات المضغوطة Zip

فكيف يمكننا إنشاء وفك ملفات ZIP على السيرفر البعيد عن طريق php

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

أولا: إنشاء ملف 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 
"**********alert ('تم إنشاء النسخة الاحتياطية بنجاح');</script>"
print 
"<br><br><p align=center><b> تم إنشاء النسخة الاحتياطية بنجاح </b></p>"

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

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


كود PHP:
                      <?php 

include_once('pclzip.lib.php'); 


  [
IMG]http://cdn5.tribalfusion.com/media/37536.gif[/IMG]    
// تعيين اسم الملف المضغوط 
$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 
"**********alert (' انتهت لائحة الملفات ');</script>"
print 
"<br><br><p align=center><b> النهـــايــة </b></p>"

?>
ثالثا: فك واسترجاع ملف 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 
"**********alert (' تمت عملية استخراج الملفات بنجاح ');</script>"
print 
"<br><br><p align=center><b> تمت عملية استخراج الملفات بنجاح </b></p>"

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

سوف تخرج لك رسالة عند عدم توفر المكتبة
Abort pclzip.lib.php : Missing zlib extensions