Merhaba.
Bu makalede, PHP programlama dilini kullanarak bir ZIP dosyasının nasıl oluşturulacağını, oluşturulan bu ZIP dosyasının nasıl geri çıkarılacağını örneklerle öğreneceksiniz. ZIP dosyanızı oluşturduktan sonra, tarayıcıyı ek olarak indirmeye zorlayacağız. Bu işlemler bildiğiniz üzere, yedekleme işlemlerinde sıkça kullanılır. Sıkıştırma işlemlerini PHP’nin içerisinde bir class olan ZipArchive sınıfı ile gerçekleştireceğiz. İşlem tamamlandığında örnek bir yedek alma, yedekten geri döndürme işlemlerini basit şekilde gerçekleştirmiş olacağız.
Dilerseniz örneklerle başlayalım.
Örnek1: (ZIP Oluşturma)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | // ZipArchive sınıfından bir nesne oluşturalım $zipArchive = new ZipArchive(); // Zip dosyasını kaydetmek istediğimiz yerin tam yolu burada $zipFilePath = '/home/data/example.zip'; //Fonksiyonu çağıralım, klasörü açalım $status = $zipArchive->open($zipFilePath, ZipArchive::CREATE); // Zip arşivimize eklemek istediğimiz bir dizi dosya. (Birden çok dosya eklemek isteyebilirsiniz) // Her dosyanın tam yolunu belirtmelisiniz. $filesToAdd = array( '/home/data/image.png', '/home/data/test.jpg' ); // Dosyalarımızı addFile işlevini kullanarak arşive ekliyoruz. foreach($filesToAdd as $fileToAdd){ // addFile fonksiyonunu kullanarak söz konusu dosyayı ekliyoruz. $zipArchive->addFile($fileToAdd); } //Son olarak arşiv dosyasını kapatıyoruz. $zipArchive->close(); // Zip dosyasının tam yolunu alalım $zipBaseName = basename($zipFilePath); header("Content-Type: application/zip"); header("Content-Disposition: attachment; filename=$zipBaseName"); header("Content-Length: " . filesize($zipFilePath)); readfile($zipFilePath); exit; |
Yukarıda yapılan işlemlerin açıklaması:
- ZipArchive sınıfını başlattık ve $zipArchive adında bir nesne oluşturduk. Bu sınıfın sadece 5.2.0 ve üstü PHP sürümlerinde mevcut olduğunu lütfen unutmayın.
- Zip Arşivimizi kaydetmek istediğimiz yerin tam yolunu belirledik. Bu yol, dosya adını ve .zip dosya uzantısını da içermelidir.
- ZipArchive :: open işlevini kullanarak yeni bir Zip arşivi oluşturduk. Ikinci bir parametre olarak geçirdiğimiz ZipArchive :: CREATE, zaten mevcut değilse dosyayı oluşturmanız gereken ZipArchive nesnesine bildirir. Dikkat: Klasör izinlerinizin olduğundan emin olun.
- Bir PHP dizisi oluşturduk ve arşivimize eklemek istediğimiz her dosyanın tam yolunu ekledik.
- Dosya dizileri dizimizi tamamladık ve bunları ZipArchive :: addFile işlevini kullanarak arşive ekledik.
- ZipArchive :: close fonksiyonu daha sonra arşivi kapatmak ve ZIP dosyasını kaydetmek için kullanılır.
- Dosya oluşturulduktan sonra, tarayıcıyı ek olarak dosyayı indirmeye zorladık.
Örnek2: (ZIP’ten çıkarma)
Aşağıda göreceğiniz örnek uygulamada var olan bir ZIP dosyamızın olduğunu farzedelim. Bu dosyayı çıkartmak istiyoruz.
1 2 3 4 5 6 7 8 9 10 11 | $zip = new ZipArchive; //Kaynak ZIP dosyamızın tam yolunu burada tanımlıyoruz. $res = $zip->open('test.zip'); if ($res === TRUE) { //ZIP içerisinden çıkarılacak dosyaların nereye çıkarılacağını buraya tanımlıyoruz. $zip->extractTo('/yedekler/20.12.18/'); $zip->close(); echo 'İşlem başarılı!'; } else { echo 'HATA!'; } |
Umarım bu makaleyi faydalı bulmuşsunuzdur. Bir sonraki makalede görüşmek üzere, keyifli kodlamalar.