Buat File Zip dari Beberapa File yang Diunggah menggunakan PHP

oleh Vincy. Terakhir diubah pada 1 Juli 2019.

File zip adalah format file yang populer di seluruh platform. Kita harus diperlengkapi dengan baik untuk menanganinya secara terprogram. Kita akan melihat tentang cara membuat file zip dari banyak file menggunakan PHP untuk kasus penggunaan unggahan banyak file.

Kami akan memiliki formulir HTML untuk memfasilitasi pengunggahan banyak file. Kemudian pada unggahan yang berhasil, file-file itu akan di-zip sebagai satu file menggunakan PHP. Mari kita berjalan melewatinya.

Untuk mengunggah banyak file, formulir HTML harus berisi larik bidang input file. Sebelumnya, kita telah melihat berbagai contoh PHP untuk mengunggah file.

Dalam contoh ini, kita akan menggunakan pengetahuan yang telah kita peroleh dari kode tutorial sebelumnya untuk menyediakan opsi unggah beberapa file. Dengan demikian, kami akan melangkah maju untuk membuat file zip dari beberapa file yang diunggah oleh pengguna.

Dalam contoh ini, ada dua file utama index.php dan upload.php. File index.php berisi kode HTML untuk membuat formulir dengan beberapa opsi input file. File upload.php berisi script PHP untuk menangani upload file dan membuat file zip.

Untuk menyesuaikan kode ini, kita perlu yakin tentang jalur target di mana file harus diunggah dan zip terkompresi akan dibuat. Adapun contoh ini, file zip akan dibuat di unggahan folder dan itu ada di root.

Setelah beberapa file diunggah dan dipindahkan ke target dengan sukses, maka tautan unduhan akan ditampilkan ke browser untuk memungkinkan pengguna mengunduh file zip yang dibuat.

Apa yang ada di dalam?

  1. Penggunaan mengompresi file yang diunggah menjadi zip
  2. Pustaka yang ada untuk membuat zip dari banyak file
  3. Tentang plugin ZipArchive
  4. Implementasi kode untuk membuat file zip dari beberapa file yang diunggah
  5. Struktur File
  6. HTML dengan opsi unggah file dan unduh zip
  7. Buat zip menggunakan PHP ZipArchive
  8. Buat File Zip dari Beberapa File yang Diunggah Contoh keluaran PHP

Penggunaan mengompresi file yang diunggah menjadi zip

Membuat file zip yang terdiri dari beberapa file akan sangat membantu dalam banyak skenario kasus penggunaan. beberapa dari mereka terdaftar di bawah ini.

  • Saat mengekspor koleksi foto sebagai zip dari galeri atau album digital apa pun, data yang diekstraksi dapat diunduh dalam bentuk zip terkompresi.
  • Dalam portal pekerjaan kualifikasi yang diunggah pengguna, dokumen riwayat hidup dikompresi ke dalam format zip yang dapat diunduh oleh admin.
  • Toko online yang menjual produk intelektual umumnya berbentuk zip yang berisi file produk software.

Pustaka yang ada untuk membuat zip dari banyak file

Ada banyak PHP, perpustakaan Javascript, plugin yang tersedia di pasar untuk membuat zip. Misalnya, perpustakaan JSZip digunakan untuk membuat file zip dan juga mendukung untuk mengedit konten zip.

JSZip adalah pustaka JavaScript yang membantu membuat, membaca, dan mengedit file zip. Itu membangun arsip file zip dengan bantuan objek API perpustakaan. Kemudian, itu membuat folder target zip secara terprogram untuk menyimpan file zip yang dibuat.

Dalam contoh ini, saya telah menggunakan kelas PHP ZipArchive untuk membuat file zip yang terdiri dari beberapa file yang diunggah. Di bagian selanjutnya, mari kita lihat kelebihan dan metodologi penggunaan kelas PHP ini.

Tentang kelas PHP ZipArchive

Kelas PHP ZipArchive memungkinkan untuk mengatur nama file, jumlah file, komentar, dan lebih banyak properti tentang arsip file.

Ini berisi metode untuk membuat direktori file zip, menambahkan file ke arsip zip, direktori kosong dan banyak lagi. Beberapa fungsi ini digunakan dalam contoh ini untuk membuat zip dengan jumlah file yang diunggah oleh pengguna.

Implementasi kode untuk membuat file zip dari beberapa file yang diunggah

Untuk mengimplementasikan proses pembuatan file zip dengan file yang diunggah saya telah menggunakan kelas PHP ZipArchive. Kelas ini dimuat dalam kode PHP dan dimuat dengan binari file yang diunggah.

Dalam contoh ini, pengguna dapat memilih dan mengunggah banyak file melalui formulir HTML. Data file diposting ke PHP dan dikompresi ke dalam format ZIP dengan menggunakan kelas PHP ZipArchive.

ZIP yang dibuat dan file yang diunggah disimpan dalam target yang ditentukan. Setelah ZIP dibuat, tautan unduhan akan ditampilkan di output untuk mengunduh file ZIP ke browser.

Struktur File

Semua implementasi ini dapat dilakukan dengan struktur file sederhana di bawah ini dari contoh ini. Jumlah minimum file yang ditampilkan dalam gambar ini menjelaskan kesederhanaan contoh ini.

Buat Zip dari Beberapa File yang Diunggah Contoh Struktur File PHP

HTML dengan opsi unggah file dan unduh zip

Di bagian ini, kita akan membuat antarmuka HTML untuk mengunggah banyak file. Juga berisi markup HTML untuk menampilkan opsi unduhan untuk zip yang dibuat.

Dalam contoh ini, saya telah menggunakan Bootstrap untuk mengembangkan antarmuka pengunggahan file. Dengan HTML bawaan banyak properti bidang input file di antarmuka ini digunakan untuk memilih beberapa file.

Setelah file dipilih dan diunggah ke sisi server, maka skrip PHP akan menangani file biner untuk dikompresi menjadi arsip zip.

<html>
<head>
    <title>Create Zip File of Multiple Uploaded Files using PHP</title>
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">

</head>
<body>
    <?php include 'upload.php'; ?>
    <div class="row">
    	<div class="page-container row-12">
    		<h4 class="col-12 text-center mb-5">Create Zip File of Multiple Uploaded Files </h4>
    		<div class="row-8 form-container">
            <?php 
            if(!empty($error)) { 
            ?>
    			<p class="error text-center"><?php echo $error; ?></p>
            <?php 
            }
            ?>
            <?php 
            if(!empty($success)) { 
            ?>
    			<p class="success text-center">
            Files uploaded successfully and compressed into a zip format
            </p>
            <p class="success text-center">
            <a href="uploads/<?php echo $success; ?>" target="__blank">Click here to download the zip file</a>
            </p>
	    	    <?php 
            }
            ?>
		    	<form action="" method="post" enctype="multipart/form-data">
				    <div class="input-group">
						<div class="input-group-prepend">
						    <input type="submit" class="btn btn-primary" value="Upload">
						</div>
						<div class="custom-file">
						    <input type="file" class="custom-file-input" name="img[]" multiple>
						    <label class="custom-file-label" >Choose File</label>
						</div>
					</div>
				</form>
				
    		</div>
		</div>
	</div>
</body>
</html>

Buat zip menggunakan PHP ZipArchive

ZipArchive adalah kelas PHP yang digunakan untuk bekerja dengan file zip. Pastikan ekstensi zip diaktifkan di pengaturan PHP Anda.

Dalam kode PHP di bawah ini, instance ZipArchive dibuat dan digunakan untuk memanggil metode untuk membuat file zip.

Setelah membuat file zip, file yang diunggah pengguna dipindahkan ke arsip zip. Dalam kode ini, file yang diunggah juga dipindahkan ke folder target seperti yang ditentukan.

Sebelumnya, kita telah melihat cara mengunggah file ke folder target menggunakan PHP. PHP move_uploaded_file($namafile, $tujuan) fungsi digunakan untuk melakukan ini. Ini membutuhkan nama file yang akan diunggah dan jalur tujuan.

Setelah file zip keluaran dibuat dengan file yang diunggah, instance zip akan dimusnahkan dengan memanggil metode tutup ZipArchive. Setelah itu, jalur sumber file zip yang dibuat dikirim sebagai respons.

Jika tidak ada file yang dipilih maka pesan kesalahan validasi sisi server akan dikembalikan. Respon kesalahan dan keberhasilan digunakan untuk menunjukkan pengakuan yang sesuai kepada pengguna.

<?php
if ($_FILES && $_FILES['img']) {
    
    if (!empty($_FILES['img']['name'][0])) {
        
        $zip = new ZipArchive();
        $zip_name = getcwd() . "/uploads/upload_" . time() . ".zip";
        
        // Create a zip target
        if ($zip->open($zip_name, ZipArchive::CREATE) !== TRUE) {
            $error .= "Sorry ZIP creation is not working currently.<br/>";
        }
        
        $imageCount = count($_FILES['img']['name']);
        for($i=0;$i<$imageCount;$i++) {
        
            if ($_FILES['img']['tmp_name'][$i] == '') {
                continue;
            }
            $newname = date('YmdHis', time()) . mt_rand() . '.jpg';
            
            // Moving files to zip.
            $zip->addFromString($_FILES['img']['name'][$i], file_get_contents($_FILES['img']['tmp_name'][$i]));
            
            // moving files to the target folder.
            move_uploaded_file($_FILES['img']['tmp_name'][$i], './uploads/' . $newname);
        }
        $zip->close();
        
        // Create HTML Link option to download zip
        $success = basename($zip_name);
    } else {
        $error="<strong>Error!! </strong> Please select a file.";
    }
}

Buat File Zip dari Beberapa File yang Diunggah Contoh keluaran PHP

Tangkapan layar di bawah ini menunjukkan respons keberhasilan dan kegagalan dari contoh PHP ini. Dalam respons sukses, itu akan menampilkan pesan teks dengan opsi untuk mengunduh file zip yang dibuat.

Buat File Zip dari Beberapa File yang Diunggah Keluaran

Validasi Unggah File untuk Membuat Zip

Kesimpulan

Kode sederhana untuk membuat file zip menggunakan PHP ini akan berguna bagi Anda saat mengembangkan aplikasi web yang terdiri dari persyaratan ini. Penanganan file di PHP sangat didukung oleh fungsi dan kelas bawaannya yang tersedia dengan intinya.

Sederhana dan mudah dengan kelas inti PHP.

Kami telah melihat kemungkinan skenario di mana contoh buat zip dengan beberapa file yang diunggah akan berguna. Ini dapat memberikan percikan kepada pengembang web yang mencari solusi dalam skenario seperti itu.

Dengan tampilan dan nuansa Bootstrap, UI memiliki unit elemen gabungan untuk memilih file, mengunggah, dan mengunduh output zip. Jika Anda ingin membuatnya sederhana, Anda dapat melepaskan pustaka Bootstrap dari contoh dan menggunakan kerangka untuk membuatnya dengan nada aplikasi Anda.

Semoga artikel ini bermanfaat bagi Anda para pembaca yang selalu mengisi hari-hari saya. Jangan ragu untuk membagikan komentar Anda, pendekatan alternatif pada kode saya.

Unduh

Kembali ke Atas


Source link