7 Ocak 2010 Perşembe

PHP: Zip dosya sıkıştırma sınıfı

Bu hafta yoğun bir şekilde çalıştığımız bir projede, kullanıcıların verilerini istedikleri takdirde yedekleyip download'a hazırlanması isteniyordu. Kullanıcıların web uygulamasına üye kişiler olduğunu varsayarsak ftp yada ssh yetkileri olmadığı için bu verilerin uygulama tarafından zip arşivi oluşturulup download'a sunulması gerekir.

Bu aşamada php ile bir zip oluşturan bir ek yazıldı. Kodu yazan arkadaşın onayı olmadığı için bu tarz bir çözüme ihtiyaç duyabilecek arkadaşlar için dosya sıkıştırma sınıflarını gözden geçirdim. Tavsiye edeceğim sınıfın yazarı bir hintli. Download edeceğiniz dosya içinde anlaşılır bir örnek kullanım yer almaktadır.

Örnek kodlar:


<?php
// Tekli sıkıştırma için değişken kullanımı
$fileToZip="License.txt";
$fileToZip1="CreateZipFileMac.inc.php";
$fileToZip2="CreateZipFile.inc.php";

// Dosyanın bulunduğu dizindeki tüm dosyaları arşivler
$directoryToZip="./";
$outputDir="/"; // Çıktı dizini.
$zipName="test.zip";

include_once("CreateZipFile.inc.php");
$createZipFile=new CreateZipFile;

/*
// Tekil zip dosyası oluşturmak için kullanılacak kodlar
$createZipFile->addDirectory($outputDir);
$fileContents=file_get_contents($fileToZip);
$createZipFile->addFile($fileContents, $outputDir.$fileToZip);
*/

//Dizindeki tum alt dizinleri ve dosyaları arşivlemek için kod
$createZipFile->zipDirectory($directoryToZip,$outputDir);

$rand=md5(microtime().rand(0,999999));
$zipName=$rand."_".$zipName;
$fd=fopen($zipName, "wb");
$out=fwrite($fd,$createZipFile->getZippedfile());
fclose($fd);
$createZipFile->forceDownload($zipName);
@unlink($zipName);
?>


Sınıfa ait adresler:
Download | Demo | Bilgi