PHP: Membuat ZIP multiple source file


Kali ini saya akan men-share tutorial tentang bagaimana membuat ZIP menggunakan PHP yang sumber filenya lebih dari satu (multiple file) dalam satu folder, kemudian hasil ZIP akan disimpan didalam folder tersebut

PHP sendiri sudah mempunyai library yang mendukung untuk compres berformat ZIP, untuk detailnya bisa langsung kunjungi manual PHP ZIP

  • Tentukan dulu file dari folder mana yang akan dijadikan file ZIP

Misalnya akan membuat file ZIP pada folder > file/gambar/

  • Tambahkan script function berikut untuk membaca daftar file yang ada didalam folder tersebut
public static function listDirectory($dir)
{
   $result = array();
   $root = scandir($dir);
   foreach($root as $value) {
      if($value === '.' || $value === '..') {
         continue;
      }
      if(is_file("$dir$value")) {
         $result[] = "$dir$value";
         continue;
      }
      if(is_dir("$dir$value")) {
         $result[] = "$dir$value/";
      }
      foreach(self::listDirectory("$dir$value/") as $value)
      {
         $result[] = $value;
      }
    }
    return $result;
}

 

  • Tambahkan script  function berikut untuk membuat file ZIP
function createZip($direktori) {
    $temp = $direktori."/";
//Panggil function langkah 2
    $file_list = $this->listDirectory($temp);
// set overwrite, jika true akan mereplace file dengan nama yang sama, jika false akan membuat nama file baru dengan akhiran angka, misal gambar_1.zip
    $overwrite = true;
//set path hasil file zip, misal gambar.zip
    $destination = $temp . "gambar.zip";
    $zip = new ZipArchive();
    if ($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) === true) {
        foreach ($file_list as $file) {
             if ($file !== $destination) {
                $zip->addFile($file, substr($file, strlen($temp)));
             }
        }
        $zip->close();
        $msg = "berhasil";
    } else {
        $msg = "gagal";
    }

    return $msg;
}
  • Panggil function langkah 3 untuk membuat file ZIP

Kemudian langkah terakhir yaitu langsung memanggil function createZip seperti berikut :

$this->createZip("file/gambar");

Jika berhasil, maka didalam folder “file/gambar/” akan terdapat file ZIP bernama gambar.zip

Semoga bermanfaat

Advertisements

2 thoughts on “PHP: Membuat ZIP multiple source file

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s