Çarşamba, 26 Ağustos 2009

Dosya Sıkıştırmak

 

CodeIgniter sıkıştırma sınıfı olarka ZIP sınıfını kendi paketi içinde hazır olarak dağıtıma sunar. Eğer hazırladığımız web sayfasının son ürünü bir dosya ise bu dosyayı ZIP sınıfını kullanarak kullanıcımıza sunabiliriz. Bu yazımda kullanıcıdan aldığımızı kabul ettiğimiz verileri toparlayıp, HTML dosya içine işleyerek kullanıcımıza ZIP formatında sunduğumuz bir uygulama yazacağım.

Bu uygulamada Ziple isimli bir controller yaratalım. Application/controllers dizini altına kayıtlı ziple.php dosyamızın içeriği şöyledir:

<?php

class Ziple extends Controller {

 function Ziple()
 {
  parent::Controller(); 
 }
 
 function index()
 {
 
  $this->load->library('zip');
  
  
  $data['person'] = "fatih";
  
  $data['mesaj'] = $this->load->view('gonder_view',$data,true);
  
  $this->zip->add_data($data['person'].".html", $data['mesaj']);

  // kullanıcımızın adında zip dosyası oluşturuyoruz.
  $this->zip->archive(APPPATH.'/zip/'.$data['person'].'.zip'); 

  // oluşturduğumuz dosyayı indirmesini sağlıyoruz
  $this->zip->download($data['person'].'.zip');
 }
}



Ziple controller dosyamızda öncelikle zip isimli CodeIngiter sınıfını yüklüyorum. Daha sonra kullanıcımızdan aldığımız bilgileri $data dizisine kayıt ediyoruz (Anlatımın karışmaması için form yerine dosya içinde, person değişkenine sabit bir değer olarak elle girdim). Kullanıcıdan aldığımız isim bilgisini, isteğimize göre hazırladığımız view sayfası içine gönderiyorum ama TRUE değişkeni ile ekrana yazmasını önlüyorum. Application/view dizini altında gonder_view.php dosyamın içeriği aşağıdadır:

<p>
 <strong> <?=$person?></strong> isimli kullanıcıya özel hazırlanmış bir html dosyasıdır.
</p>

$person değişkenini controller dosyasından alarak dosya içine yazdırıyorum. Daha sonra zip sınıfındaki add_data isimli metod ile, "kullanıcı_adı.html" formatındaki dosyamın içine view dosyamdan aldığım "mesaj" isimli değişkeni yazdırıyorum. Böylece istediğim HTML formatında hazırladığım dosyamı zip dosyamın içine yazdırmış oluyorum.

Bundan sonra zip sınıfından "archive" metoduyla, application dizini altında elle yaratıp yazma yetkisi verdiğim (Linux makineler için 777 modu) "zip" isimli dizine oluşturduğum bu dosyayı kayıt ediyorum. Son adım olarak ise zip sınıfının "download" isimli metdouyla oluşturduğum bu dosyanın kullanıcı bilgisayarına indirilmesine imkan veriyorum.

Sıkıştırma sınıfını kısaca anlattığım bu yazı ile kendiniz çeşitlendirmeler yapabilirsiniz.

Yorumlar

Henüz yorum gelmemiş.

Yorum Ekle