Cara Membuat ZIP File Dengan PHP

Tutorial php berikut ini adalah membuat zip file dengan PHP, zip digunakan untuk membungkus banyak data ke dalam satu file atau singkatnya di kompres (compress).

PHP sendiri memungkinkan untuk membuat zip, menambahkan, bahkan dapat mengekstrak zip file yang di upload oleh user ke dalam direktori server yang sudah di buatkan proses ekstrak zip file tersebut.

Fitur ini bisa anda manfaatkan untuk mempermudah upload data dari komputer client ke server, sehingga tidak perlu di upload satu-persatu atau sebaliknya, client bisa mendownload beberapa file sekaligus dan otomatis di masukan ke dalam zip sehingga tidak perlu lagi user download satu persatu file.

Membuat Zip File Dengan PHP

Perlu diketahui sebelum kita memulai membuat file zip bahwa nanti kita akan menggunakan library ZipArchive dimana library tersebut sudah tersedia secara bawaan di PHP versi 5 keatas sehingga kita tidak membutuhkan pihak ketiga untuk menggunakan fitur zip ini.

Pertama-tama buatlah sebuah file apa saja yang anda ingin compress ke zip, sebagai contoh penulis membuat sebuah file dokumen dengan nama test-file.docx lalu buatlah sebuah file didalam folder yang sudah anda siapkan (terserah apa saja foldernya) web server atau localhost anda dengan nama process.php dan masukkan kode dibawah ini.

<?php 

$zip = new ZipArchive;

if($zip->open('compress.zip', ZipArchive::CREATE) === true) {
    $zip->addFile('test-file.docx');
    $zip->addFromString('test.txt', 'Contoh file txt zip');
    $zip->close();
}

Jika sudah setelah itu silahkan akses file process.php yang sudah dibuat tersebut, jika berhasil maka akan ada sebuah file dengan nama compress.zip didalam folder latihan yang sudah anda buat, dimana didalam compress.zip tersebut akan terdapat file test-file.docx dan test.txt.

Penjelasan kode diatas.

  • $zip = new ZipArchive untuk memanggil class ZipArchive.
  • $zip->open() digunakan untuk membuka file zip namun apabial menggunakan konstanta ZipArchive::CREATE maka akan membuat file zip baru.
  • $zip->addFile() digunakan untuk menambahkan file ke dalam file zip.
  • $zip->addFromString() digunakan untuk menambahkan file baru yang didalamnya terdapat kalimat yang dibuat didalam fungsi tersebut.
  • $zip->close() digunakan untuk menutup kerja ZipArchive.

Ekstrak (Extract) File Zip Dengan PHP

Selain itu kita juga dapat mengekstrak file zip dengan php, dimana file-file didalam zip tersebut nantinya akan dikeluarkan dan diletakan didalam server.

Namun pertama-tama kita perlu membuat sebuah halaman upload, konsepnya adalah user melakukan upload file zip lalu di ekstrak kedalam folder server yang sudah kita siapkan nantinya.

Buatlah sebuah file dengan nama upload.php lalu masukkan kode dibawah ini.

<html>
    <head>
        <title>Ekstrak File Zip Dengan PHP</title>
    </head>
    <body>
        <form action="upload-process.php" method="POST" enctype="multipart/form-data">
            <input type="file" name="file">
            <button>Ekstrak</button>
        </form>
    </body>
</html>

Setelah itu buatlah satu file lagi dengan nama upload-process.php lalu masukkan kode dibawah ini.

<?php 

if(isset($_FILES['file'])) {
    $zip = new ZipArchive;
    
    if($zip->open($_FILES['file']['tmp_name'])) {

        if(!is_dir(__DIR__ . '/extract')) {
            mkdir(__DIR__ . '/extract', 0755);
        }

        $zip->extractTo(__DIR__ . '/extract/');
        $zip->close();
    }
}

header('Location: upload.php');

File-file diatas silahkan letakan didalam folder local anda yang anda buat sendiri terserah namanya apa yang penting bisa diakses di browser.

Selanjutnya silahkan akses upload.php yang sudah dibuat tadi, maka seharusnya akan muncul sebuah form upload sederhana seperti gambar dibawah ini.

Extract File Zip Dengan PHP

Jika sudah silahkan coba upload file zip yang sudah anda siapkan, dimana didalam file zip tersebut terdapat file-file apa saja. Maka otomatis file-file yang ada didalam file zip tersebut akan di extract dengan php ke dalam folder extract.

Semoga tutorial ini bermanfaat dan bisa digunakan dengan sebaik-baiknya.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.