Cara Membuat File Zip menggunakan PHP ZipArchive dan Download

0
(0)

oleh Vincy. Terakhir diubah pada 12 September 2022.

Membuat zip dari folder yang penuh dengan file dapat dilakukan di PHP menggunakan kelas ZipArchive. Instance kelas ini membuat pegangan untuk membaca atau menulis file ke arsip terkompresi.

Kelas ini mencakup beberapa properti dan metode untuk zip arsip file.

Pada artikel ini, kita akan melihat contoh,

  1. Cara membuat file arsip zip.
  2. Cara mengunduh file zip terkompresi.

Jika Anda ingin tahu cara mengompres lebih dari satu gambar dalam kompresi gambar PHP, lihat artikel sebelumnya ini.

Cara membuat file arsip zip

File ini mem-parsing direktori input dan mengompresi filenya menjadi file zip. Ini dilanjutkan dengan langkah-langkah berikut untuk membuat file zip dari sebuah direktori.

  1. Buat instance kelas ZipArchive PHP.
  2. Buka arsip file zip dengan instance. Ia menerima nama file zip keluaran dan mode untuk membuka arsip.
  3. Terapkan parsing rekursif di direktori input.
  4. Jika direktori menyertakan file, maka itu akan ditambahkan ke arsip zip menggunakan tambah berkas().

Ini menangani kasus penggunaan untuk mendapatkan kemungkinan tidak dapat membaca atau mengarsipkan direktori. Setelah zip dibuat, ini akan menampilkan pesan ke browser.

create-zip-file.php

<?php
// Important: You should have read and write permissions to read
// the folder and write the zip file
$zipArchive = new ZipArchive();
$zipFile = "./example-zip-file.zip";
if ($zipArchive->open($zipFile, ZipArchive::CREATE) !== TRUE) {
    exit("Unable to open file.");
}
$folder="example-folder/";
createZip($zipArchive, $folder);
$zipArchive->close();
echo 'Zip file created.';

function createZip($zipArchive, $folder)
{
    if (is_dir($folder)) {
        if ($f = opendir($folder)) {
            while (($file = readdir($f)) !== false) {
                if (is_file($folder . $file)) {
                    if ($file != '' && $file != '.' && $file != '..') {
                        $zipArchive->addFile($folder . $file);
                    }
                } else {
                    if (is_dir($folder . $file)) {
                        if ($file != '' && $file != '.' && $file != '..') {
                            $zipArchive->addEmptyDir($folder . $file);
                            $folder = $folder . $file . "https://phppot.com/";
                            createZip($zipArchive, $folder);
                        }
                    }
                }
            }
            closedir($f);
        } else {
            exit("Unable to open directory " . $folder);
        }
    } else {
        exit($folder . " is not a directory.");
    }
}
?>

Keluaran

//If succeeded it returns 
Zip file created.

//If failed it returns 
Unable to open directory example-folder.
[or]
"example-folder is not a director.

php buat zip

Cara mengunduh file zip terkompresi

Pada langkah terakhir, file zip dibuat menggunakan kelas PHP ZipArchive. File zip itu dapat diunduh dengan menggunakan kode PHP di bawah ini.

Ini mengikuti langkah-langkah di bawah ini untuk mengunduh file zip yang dibuat.

  1. Dapatkan path absolut dari file zip.
  2. Atur parameter header seperti,
    • Panjang konten.
    • Jenis konten.
    • Encoding konten, dan banyak lagi.

download-zip-file.php

<?php
$filename = "example-zip-file.zip";
if (file_exists($filename)) {
    // adjust the below absolute file path according to the folder you have downloaded
    // the zip file
    // I have downloaded the zip file to the current folder
    $absoluteFilePath = __DIR__ . "https://phppot.com/" . $filename;
    header('Pragma: public');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Cache-Control: private', false);
    // content-type has to be defined according to the file extension (filetype)
    header('Content-Type: application/zip');
    header('Content-Disposition: attachment; filename="' . basename($filename) . '";');
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: ' . filesize($absoluteFilePath));
    readfile($absoluteFilePath);
    exit();
}
?>

File ini hanya memiliki tautan untuk memicu fungsi untuk membuat file zip yang berisi arsip direktori terkompresi. Kemudian, tindakan untuk mengunduh arsip zip keluaran disebut.

index.php

<div class="container">
    <h2>Create and Download Zip file using PHP</h2>
    <p>
        <a href="https://phppot.com/php/php-create-zip-ziparchive-files-download/create-zip-file.php">Create Zip File</a>
    </p>
    <p>
        <a href="download-zip-file.php">Download Zip File</a>
    </p>
</div>

Beberapa metode kelas ZipArchive PHP

Kita dapat melakukan lebih banyak operasi dengan menggunakan metode dan properti dari kelas ZipArchive PHP. Daftar metode ini disediakan oleh kelas PHP ini.

  1. count() – digunakan untuk mendapatkan jumlah file dalam file arsip zip.
  2. extractTo() – mengekstrak konten arsip.
  3. renameIndex() – mengganti nama entri arsip tertentu dengan index.
  4. replaceFile() – mengganti file dalam arsip zip dengan file baru dengan menentukan jalur baru.

Metode ZipArchive yang digunakan dalam contoh ini

Beberapa metode yang digunakan dalam contoh ini tercantum di bawah ini. Ini adalah metode yang sering digunakan dari kelas ini untuk bekerja dengan ini.

  1. open() – Buka file arsip zip dengan menentukan nama file .zip.
  2. addFile() – Untuk menambahkan file dari direktori input ke arsip zip.
  3. addEmptyDir() – menambahkan direktori kosong ke dalam arsip untuk memuat file subdirektori dari direktori input.
  4. close() – menutup ZipArchive yang aktif dengan referensi pegangan.

Unduh

Kembali ke Atas


Source link

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.