Download as Zip dengan PHP

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

Share Artikel ini:

Similar Posts

  • Perintah Manajemen User di Linux

    Perintah Manajemen user di linux adalah segala perintah yang berhubungan dengan pengelolaan user di linux. Sekenario paling pas untuk manajemen user adalah pada webhosting atau lab komputer di kampus TI. Secara umum, manajemen user terdiri dari tiga hal utama yaitu Membuat user baru. Mengganti password. Menghapus user . membuat user baru gunakan perintah useradd sudo…

  • Mengatasi Error PHP

    Walaupun PHP adalah bahasa yang cukup mudah dipelajari,namun ternyata masih banyak yang belum paham benar dengan konsep error dan bagaimana cara mengatasinya. Error yang saya bahas disini lebihfokus pada eror karena perbedaan konfigurasi antara satu server dengan server yang lain, atau antara satu komputer dengan komputer yang lain. Contoh kasusnya, anda mendownload source code dari…

  • Menambah Dukungan Oracle di Apache XAMPP

    XAMPP adalah bundle software lengkap untuk belajar pemrograman PHP dan MySQL. Sebenarnya PHP sendiri bisa dipasangkan dengan database lain seperti PostgreSQL atau Oracle, sayangnya masih banyak yang kesulitan melakukan seting agar Apache /XAMPP mendukung database oracle. Tujuan dari tulisan ini adalah memberikan petunjuk sederhana bagaimana agar Apache XAMPP kamu bisa support database oracle sehingga kamu…

  • |

    Penjelasan Struktur Data JSON

    JSON adalah kependekan dari Javascript Object Notation. JSON dipakai untuk dua hal; yang pertama untuk format transfer data antar device/OS/bahasa pemerograman yang berbeda dan sebagai media penyimpanan data seperti MongoDB. JSON dalam artikel ini lebih menekankan pada transfer data. Sebenarnya selain JSON, format transfer data antar sistem bisa dilakukan XML, plaintext ataupun HTML, namun 3…

  • |

    Membuat Print Preview dengan PHP

    Laporan adalah suatu yang wajib dalam sebuah transaksi atau proses bisnis. Tidak jauh berbeda dengan aplikasi desktop, Aplikasi berbasis web juga membutuhkan laporan untuk di cetak atau di download dengan format lain seperti PDF atau XLS. Tiga artikel kedepan akan membahas tentang teknik membuat laporan berbasis web. Untuk teknik pertama adalah membuat laporan dengan format…

  • Memahami Android Manifest

    Setiap aplikasi android mempunyai file paling penting yang bernama AndroidManifest.xml . Android Manifest punya beberapa tugas, untuk lebih jelasnya saya akan beri contoh android manfiest dan akan saya beri penjelasan dibawahnya. <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="id.web.candra.demo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17" /> <!– mengakses internet . –> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@drawable/launcher"…

4 Comments

    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

Leave a Reply

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