Cara membuat file zip menggunakan PHP ZipArchive dan unduh

Programming

Oleh Vinci terakhir diubah pada 12 September 2022.

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

Kelas ini berisi beberapa properti dan metode untuk membuat zip arsip file.

Dalam artikel ini contoh dari

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

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

Cara membuat file arsip terkompresi

File ini mem-parsing direktori input dan mengompresi filenya menjadi file zip. Ikuti langkah-langkah di bawah ini untuk membuat file zip direktori.

  1. Buat instance kelas ZipArchive PHP.
  2. Buka arsip zip dengan sampel. Menerima nama file zip keluaran dan mode pembukaan arsip.
  3. Terapkan parse rekursif ke direktori input.
  4. Jika direktori berisi file, itu akan ditambahkan ke arsip terkompresi menggunakannya tambah berkas().

Kasus penggunaan ini menangani kemungkinan tidak dapat membaca atau mengarsipkan direktori. Setelah membuat zip, itu 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 membuat zip

Cara mengunduh file zip

Terakhir, file zip dibuat menggunakan kelas PHP ZipArchive. File terkompresi ini dapat diunduh menggunakan kode PHP di bawah ini.

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

  1. Dapatkan path absolut dari file zip.
  2. Parameter tajuk seperti
    • Panjang konten
    • Jenis konten.
    • Enkripsi 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 berisi link untuk menjalankan fungsi membuat file zip yang berisi arsip zip dari direktori. Kemudian tindakan pengunduhan dari file terkompresi 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 PHP ZipArchive

Dengan menggunakan metode dan properti dari kelas ZipArchive PHP, kita dapat melakukan lebih banyak operasi. Daftar metode ini disediakan oleh kelas PHP ini.

  1. count() – digunakan untuk mendapatkan jumlah file dalam file arsip zip.
  2. ExtractTo() – mengekstrak isi arsip.
  3. renameIndex() – Ganti nama entri arsip tertentu dengan index.
  4. replaceFile() – Ganti 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 paling umum digunakan untuk kelas 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 arsip untuk memuat subdirektori dari direktori input.
  4. close() – menutup ZipArchive yang aktif dengan referensi.

Unduh

Kembali ke atas


Source link

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.