Jumat, 28 Juni 2013

6/28/2013
2
Oh, sudah lama nggak buat artikel tentang php dan kali ini saya akan sedikit memberikan cara membuat file Zip dan mengextractnya dengan PHP.

Pertama buat file zip.php dan isi dengan script berikut

<?php

/**
 * Class CZipArchive  
 * Digunakan untuk membuat dan mengextract file zip
 * 
 * @dibuat        Dida Nurwanda
 * @email        dida_n@ymail.com
 * @blog        didanurwanda.blogspot.com
 */

class CZipArchive extends ZipArchive
{
    public function create($fileName='', $overwrite=false, $fileAndDir='')
    {
        if(file_exists($fileName) && !$overwrite)
        {
            return false;
        }
        
        if(is_array($fileAndDir))
        {
            $vFile=array();
            
            foreach($fileAndDir as $file)
            {
                if(file_exists($file))
                {
                    $vFile[]=$file;
                }
            }
            
            if(count($vFile))
            {
                if($this->open($fileName, $overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true)
                {
                    return false;
                }
            
                foreach($vFile as $file)
                {
                    $this->addFile($file,$file);
                }
                
                $this->close();
            
                return file_exists($fileName) ? true : false;
            }
            else
            {
                return false;
            }
        }
        else
        {
            if($this->open($fileName, $overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true)
            {
                return false;
            }
            $this->addFile($fileAndDir,$fileAndDir);
            $this->close();
            return file_exists($fileName) ? true : false;
        }
        
    }
    
    public function extract($to='', $file='')
    {
        if($this->open($file)===true)
        {
            $this->extractTo($to);
            $this->close();
            return true;
        }
        else
        {
            return false;
        }
    }
}

Kemudian buat contoh file untuk penggunaannya, saya menggunakan nama index.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Zip Dengan PHP - Dida Nurwanda</title>
</head>
<body>
<center><h1>Create dan Extract Zip dengan PHP</h1></center>
<center><h4>Dida Nurwanda</h4></center>
<center><a href="http://didanurwanda.blogspot.com">didanurwanda.blogspot.com</a></center>
<br /><br />
<a href="?type=create">Create ZIP</a><br />
<a href="?type=extract">Extract Zip</a><br />

<?php
require_once dirname(__FILE__).'/zip.php';
$zip=new CZipArchive;

// membuat zip
if(isset($_GET['type']) && $_GET['type']=='create')
{
    $return=$zip->create('data.zip',true,array('zip.php','index.php'));
    if($return)
    {
        echo "<center><h3><i>Anda berhasil membuat file ZIP</i></h3></center>";
    }
    else
    {
        echo "<center><h3><i>Anda gagal membuat file ZIP</i></h3></center>"; 
    }
}
elseif(isset($_GET['type']) && $_GET['type']=='extract')
{
    $return=$zip->extract('./folder','data.zip');
    if($return)
    {
        echo "<center><h3><i>Anda berhasil mengextract file ZIP</i></h3></center>";
    }
    else
    {
        echo "<center><h3><i>Anda gagal mengextract file ZIP</i></h3></center>"; 
    }
}
?>
</body>
</html>

Sedikit menjelaskan tentang Class yang saya buat, untuk fungsi create($fileName='', $overwrite=false, $fileAndDir='') sebagai berikut :
  • $fileName itu merupakan nama file Zip yang akan anda buat,
  • $overwrite berfungsi untuk menimpa file Zip yang telah ada, default false
  • $fileAndDir merupakan nama file yang akan dibuat Zip, pada variable ini anda dapat memasukan banyak file sekaligus dengan array atau hanya satu file dengan string
Untuk fungsi extract($to='', $file='') sebagai berikut :
  • $to merupakan direktory tempan mengextract file Zip
  • $file merupakan nama file Zip yang akan di extract
Berikut penampakan contoh programnya

Download
Password : didanurwanda.blogspot.com

2 komentar:

  1. mas saya mau nanyak tentang artikelnya...

    Untuk ekstrak langsung file zip yg isinya excel ke sql bisa gak tuh yah...?

    BalasHapus

Mohon tidak mencantumkan URL pada komentar yang bersifat promosi.