Zip format sudah menjadi standar kompresi file di dunia, oleh karena itu php menyediakan class khusus untuk menghandle file zip ini. Sehingga kita bisa membuat file zip programmatically dan di simpan di server web, di download atau dikirim ke penyimpanan cloud seperti Google drive , one drive , dropbox atau yang lain.
Class ini bernama zAchiver yang sudah include dalam php versi 5.2 ke atas dan menjadi class internal sehingga kita tidak perlu menambahkan library apapun lagi.
Membuat File zip
Untuk membuat file zip, gunakan script berikut ini:
<?php $zip = new ZipArchive; if ($zip->open('new.zip', ZipArchive::CREATE) === TRUE) { // Add files to the zip file $zip->addFile('test.txt'); $zip->addFile('test.pdf'); // Add random.txt file to zip and rename it to newfile.txt $zip->addFile('random.txt', 'newfile.txt'); // Add a file new.txt file to zip using the text specified $zip->addFromString('new.txt', 'text to be added to the new.txt file'); // All files are added, so close the zip file. $zip->close(); } ?>
Penjelasan:
- Pertama kali kita memanggil class zipArchiver.
- Membuat file zip baru dengan nama new.zip
- Selanjutnya menambahkan beberapa file yang akan dimasukkan ke file zip, bisa dari file eksisting atau membuat file baru.
- Langkah terakhir adalah memanggil perintah close(), untuk menutup dan menyelesaikan pembuatan file new.zip ini.
Download file zip
Setelah sukses membuat file zip, kita bisa membuat link yang digunakan untuk mendownloadnya. Dalam hal ini kita hanya perlu merubah header web agar mengarah ke download.
Berikut codenya, masukkan ke header file php atau html yang mengarah ke link file zip
header('Content-Type: application/zip'); header('Content-disposition: attachment; filename=new.zip'); header('Content-Length: ' . filesize('new.zip')); readfile('new.zip');
Ekstrak file zip
Extract atau unzip untuk membongkar file zip dan mengembalikan file – file yang ada di dalamnya. Masih menggunakan class zipArchiver, kita lakukan dengan script berikut ini
<?php $zip = new ZipArchive; // Zip File Name if ($zip->open('new.zip') === TRUE) { // Unzip Path $zip->extractTo('/Destination/Directory/'); $zip->close(); echo 'Unzipped Process Successful!'; } else { echo 'Unzipped Process failed'; } ?>
Penjelasan:
- Memanggil class zipArchiver
- Selanjutnya membuka file zip, digunakan fungsi if untuk memastikan file zip nya bisa dibuka
- Gunakan perintah extractTo untuk membongkar file zip dengan parameter direktori tujuan ekstrak.
- Langkah terakhir close() untuk menutup file zip