public function do_upload() { $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = 100; $config['max_width'] = 1024; $config['max_height'] = 768; //Dosya yüklemek için en temel ayarlar. //Dizin , format , boyut,genişlik,yükseklik gibi ayarlar. $this->load->library('upload', $config); //upload sınıfını dahil ediyoruz. if ( ! $this->upload->do_upload('userfile')) //formda resim alanına vermiş olduğumuz name değeri ile yüklenip yüklenmediğini //kontrol ediyoruz. Eğer yüklenmemişse hata mesajı bastırıyoruz. { $error = array('error' => $this->upload->display_errors()); $this->load->view('upload_form', $error); } else { $data = array('upload_data' => $this->upload->data()); $this->load->view('upload_success', $data); } }İşlemler oldukça basit ve sade. Sadece kendimize göre uyarlamamız gerekiyor. Config dosyasındaki diğer ayarları yine dökümantasyondan bulabilirsiniz. Not: Dosyanın yükleneceği dizini iyi seçmelisiniz. Uygulamanın ana dizinine açıyorsanız ‘ uploads ‘ diye belirtebilirsiniz. Alt dizinlerde ise buna dikkat ederek belirtin. Aşağıda benim örneğimi görebilirsiniz. Burada bütün işlemler var, form kontrolü , veri gönderimi , session kontrolü , dosya yükleme gibi birçok işlem var. Yukarıdaki örnekten farklı bir ayar görmeyeceksiniz zaten.
public function AddArticle(){ if(empty($this->session->username)){ redirect(base_url()); } $this->load->model('Control'); $query = $this->Control->SelectCategory(); $data['cat_list'] = $query; $this->load->view('Panel/AddArticle_view.php',$data); if($_POST){ $config['upload_path'] = 'uploads'; $config['allowed_types'] = 'jpeg|jpg|png'; $config['max_size'] = '4096'; $config['min_width'] = '300'; $config['min_height'] = '200'; $config['remove_spaces'] =true; $this->load->library('upload', $config); if ($this->upload->do_upload("resim")){ $upload_data = $this->upload->data(); $dosyaadi = $upload_data['file_name']; $dosyayolu ="uploads/".$dosyaadi; $this->form_validation->set_rules('baslik','Başlık','required'); $this->form_validation->set_rules('aciklama','Açıklama','required'); if($this->form_validation->run() == TRUE){ $baslik = $this->input->post('baslik'); $seo_baslik = seo($this->input->post('baslik')); $aciklama = $this->input->post('aciklama'); $kategori = $this->input->post('kategori'); $yazan = $this->session->username; $tarih = date('d.m.y H:i:s'); $gtarih = date('d.m.y H:i:s'); $result = $this->Control->AddArticle($baslik,$seo_baslik,$aciklama,$kategori,$yazan,$tarih,$gtarih,$dosyayolu); if($result == 1){ redirect(base_url('Admin/AddArticle')); }else{ echo 'Bir hata var'; } }else{ echo '<div class="alert alert-danger">Form alanlarını kontrol et!</div>'; } }else{ echo '<div class="alert alert-danger"> <center>Hata, bir sorun var!.'.$this->upload->display_errors().'</center></div>'; } } }Açıklama $config[‘upload_path’] = ‘uploads’; => Dosyanın yükleneceği dizin $config[‘allowed_types’] = ‘jpeg|jpg|png’; => Kabul edilen dosya formatları $config[‘max_size’] = ‘4096’; => Maksimum dosya boyutu $config[‘min_width’] = ‘300’; => Minimum genişlik $config[‘min_height’] = ‘200’; => Minimum yükseklik $config[‘remove_spaces’] =true; => Resim ismindeki boşlukları temizler. $this->upload->display_errors(); => Olası bir hatada ekrana hata mesajını basar. Alternatif bir yöntem $this->load->library(‘upload’, $config); ifadesini kullanmak istemezseniz farklı bir yöntem de sunuluyor. Bize alternatif sağlayan anahtar kelime ise initialize. Bu yöntem sayesinde dahil etme farklı bir boyut alıyor ve kodda ufak bir oynama oluyor.
$this->load->library('upload', $config);yerine
$this->upload->initialize($config);şeklinde kullanabiliyoruz.Ancak dökümantasyonda ilk yöntem uygun görülmüş ve tavsiye ediliyor.