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

Categories: PHP

Candra Adi Putra

Candra Adi Putra S.Kom adalah Alumni STMIK AKAKOM Yogyakarta. hubungi saya di candraadiputra (at) gmail (dot) com

4 Comments

Anonymous · 12 April , 2019 at 8:39 am

mantap ga

Anonymous · 22 August , 2014 at 2:31 pm

mas mau tanya…
klo untuk download file folder dan file php dengan php bisa gak ya ???

renaz · 20 June , 2013 at 1:27 pm

mau tanya, sebenarnya mudahan mana antara pengunaan WordPress sama PHP ?
thx…

    Candra Adi Putra · 23 June , 2013 at 12:22 am

    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

Comments are closed.