Download as Zip dengan PHP

tampilan halaman download as zip

pernahkah anda mendownload banyak file dari internet dalam sekali download? User cukup mencentang file file yang akan didownloadnya dan ketika di klik download, maka secara otomatis file file yang tercentang tadi di kompres dalam satu file zip dan jendela download keluar? Yup, kira kira seperti itulah yang akan kita buat.

sekenario

kita mempunyai 4 buah gambar. user bisa mendownload gambar yang dia suka. Caranya cukup centang gambar yang akan didownload . file secara automagic akan terzip dan terdownload. bagaimana sih caranya membuat magic trik seperti ini? langsung saja bro

tampilan halaman download as zip
tampilan halaman download as zip

Struktur project

download.php
gambar1.jpg
gambar2.jpg
gambar3.jpg
gambar4.jpg
index.php

index.php adalah file utama berisi form untuk gambar yang akan didownload. download.php adalah script php yang akan menzip file dan script untuk mendownload file yang baru saja di buat. Gambar1 sampai gambar4 adalah gambar yang bisa dipilih oleh user untuk didownload.

Index.php

<div class="masthead">

<h2 class="muted">Website - Download as zip </h2>
</div>
<hr>
		<form method='post' action="download.php">
		<input type='checkbox' name='download[]' value='gambar1.jpg'>
		<img src='gambar1.jpg'>
		<input type='checkbox' name='download[]' value='gambar2.jpg'>
		<img src='gambar2.jpg'>
		<input type='checkbox' name='download[]' value='gambar3.jpg'>
		<img src='gambar3.jpg'>
		<input type='checkbox' name='download[]' value='gambar4.jpg'>
		<img src='gambar4.jpg'>
		<br/>
		<input type='submit' value='download as zip'>
				</form>

download.php

Untuk penjelasan kode, perhatikan komentarnya.

<?php
/* letak folder */

if($_POST){
/* nama zipfile yang akan dibuat */
$zipname = "gambar.zip";
/* proses membuat zip file */
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);

foreach ($_POST['download'] as $key => $value) {
$zip->addFile($value);
	
}
$zip->close();
/* preses pembuatan zip file selesai disini */

/* download file jika eksis*/
if(file_exists($zipname)){
header('Content-Type: application/zip');
header('Content-disposition: attachment; 
filename="'.$zipname.'"');
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
unlink($zipname);

} else{
$error = "Proses mengkompresi file gagal  ";
} //end of if file_exist
}//end of post
?>

Demo

Coba demonya langsung disini

Author: Candra Adi Putra

Candra Adi Putra adalah Alumni STMIK AKAKOM Yogyakarta. Like Candralab Studio Di Facebook.

3 thoughts on “Download as Zip dengan PHP”

    1. klo mudahan mana ya mudahan wordpress,namun sekedar ngasih tahu..wordpress itu juga dibuat pake PHP. klo cuman buat website perusahaan/berita/informasi/katalog dsb mending wordpress, namun klo ingin membanguns solusi yang tidak ada di wordpress, pakelah php, misalkan sistem pendaftaran online atau siakad dsb

Tinggalin komentar dong!