PHP: ZipArchive: Zip dosya upload işlemleri

PHP ile Zip ExtractTo
Bazı projelerde ihtiyacınız olabilecek bir konu, PHP ile ZipArchive Sınıfını kullanımı. Bu sınıf 5.2.0 ve üzeri sürümlerde aktif kullanılabilmektedir.

PHP ZipArchive sınıfının tüm özelliklerini burada inceleyebilirsiniz.

Zip dosyasını upload ettikten sonra, işleyebilmek için ZipArchive sınıfında ExtractTo fonksiyonunu kullanmamız gerekiyor.

ZipArchive için örnek kullanım modeli şu şekilde;


<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
$zip->extractTo('/my/destination/dir/');
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
?>

Bu işlemleri daha net görebilmeniz için, küçük bir zip upload formu ve zip dosyasındaki dosyaların istenilen klasöre taşındığı basit bir uygulama kodlarını ekliyorum;

index.php

<form method="post" action="post.php" enctype="multipart/form-data">
<p>
<label>Resim: </label><br />
<input type="file" name="resim" /> (yanlızca .zip resim yükleyebilirsiniz)
</p><br />

<p>
<input type="submit" name="ekle" value="EKLE" />
</p>
</form>

index.php dosyasındaki form aracılığıyla yüklenen dosyayı post.php‘e aktarıyoruz. file uplod ve file manipulation işlemlerini post.php‘de gerçekleştiriyoruz.

post.php

<?php
if(isset($_FILES&#91;'resim'&#93;)){
if($uploaded_type=='application/x-zip' || $uploaded_type =='application/zip' || $uploaded_type=='application/x-zip-compressed' || $uploaded_type=='application/octet-stream'){
/** yuklenen dosyaninn zip olduguna emin olduktan sonra kod blogu calisir */
$ext=end(explode(".",basename($_FILES&#91;'resim'&#93;&#91;'name'&#93;))); // dosyanin uzantisi aliniyor
$yeni="serpito_".time().".".$ext;
$ziptar= "../images/zip/".$yeni; // zip dosyasının istedigimiz yere, yeni isimle upload ediyoruz

if(move_uploaded_file($_FILES&#91;'resim'&#93;&#91;'tmp_name'&#93;, $ziptar)){

$path="../images/zip/"; // klasor yolu
$file=$path.stripslashes($_GET&#91;'zip'&#93;); // dosyanin tam pathi

$zip = new ZipArchive; // ZipArchive sınıfı tanimlaniyor.

$res = $zip->open($path.$_GET['zip']);
if ($res === TRUE) {
$zip->extractTo($path."tr/"); // zip dosyasi icerigi "images/zip/tr/" dizinine cikariliyor.
$zip->close();
} else {
echo 'Bilinmeyen hata';
}

/** zip dosyasinin icinden cikan dosya icerigini listeleyim */

echo "<ul>";
$direc=scandir($path."tr/"); // scandir fonksiyonu
foreach($direc as $res){
echo "<li>".$res."</li>";
}

echo "</ul>";

}

}else{
echo "Yüklediğiniz dosya zip formatında değil. Lütfen .zip uzantılı dosya upload ediniz.";
}
}
?>

One thought on “PHP: ZipArchive: Zip dosya upload işlemleri

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir