Codeigniter Dosya Yükleme

Merhaba arkadaşlar,
Mobilhanem.com’ da yayınladığımız Codeigniter Dersleri setimize 9. yazımızla devam ediyoruz. Önceki dersimizde Codeigniter Form Validation kullanımı konusundan bahsettik. Bu dersimizde ise Codeigniter Dosya yükleme konusundan bahsedeceğiz.

Uygulama Senaryosu

Bu derste yapacağımız uygulamada kullanıcı makaleler yazacak ve yazdığı bu makalelere ait Başlık, İçerik, ve resim ya da dosya paylaşımı yapabilecektir(opsiyonel). Kullanıcıların yazdığı makaleler ise anasayfada listelenecek.

Veritabanı Tasarımının Yapılması

PhpMyAdmin’ de mobilhanemblog adında bir veritabanı oluşturuldu ve bu veritabanı içinde de article adında bir tablo oluşturuldu. Tablonun kolonları da aşağıda bulunan resimdeki gibi belirlendi.

Dosya yükleme veritabanı tasarımı

Codeigniter ile çalışırken veritabanı bağlantısı yapmak için gerekli konfigürasyonları Codeigniter Veritabanı işlemleri dersimden bulabilirsiniz.

Form Tasarımının Yapılması

Bu aşamada kafa karışıklılığı yaşatmamak adına gerekli .htaccess düzenlemesini yaptığımı ve Welcome controller’ ı yerine Home controller ile çalışacağımı belirtmek isterim. Bu bende Asp.Net Mvc’ den kalma bir alışkanlık. Siz isterseniz çalışmanızı Welcome controller’ ında yapabilirsiniz.

Makaleleri Home Controller’ ının index Action’ unda listeleyeceğim. Listeleme işlemini ise veritabanında şuanlık makale bulunmadığından en sona bırakacağım. İlk olarak makale eklemek için gerekli View dosyasının görüntülenmesi işlemi ile başlayacağız.

Makale Ekleme Form Sayfası Tasarımı

Bu sayfada yazının başında da belirttiğimiz gibi bir makaleye ait Başlık, İçerik, ve Dosya yolu gibi bilgilerin alınması gibi bilgiler yer alacak. Konuyu basit tutmak adına böyle bir tasarım yapmayı tercih ettim. İstenirse bu alanlar arttırılabilir.

Home controller’ ına ait kodlar aşağıdaki gibidir

AddArticle Action’ una ait Article View Dosyasına ait html kodları da aşağıdaki gibidir.

Yukardaki kodlarda form html tag’ ına ait enctype=”multipart/form-data” özelliği dikkatinizi çekmiş olabilir. enctype özelliği form verilerinin sunucuya gönderilirken nasıl kodlanması gerektiğini belirtir. enctype özelliği yalnızda method=”post” olduğunda kullanılabilir. Form tag’ ı içinde enctype=”multipart/form-data” özelliği eklenmezse doya yükleme işlemi gerçekleştirilemez.

Makale Model Dosyasının Oluşturulması

Makale için bulunan model dosyasında sadece ekleme ve silme işlemlerini gerçekleştireceğimiz için bu iki işleme ait metodun bulunması yeterlidir. Makale için oluşturacağım model dosyasının adını Article_model yaptım. Model dosyasına ait kodlar aşağıdaki gibi olacaktır.

PostAddArticle Action’ unun Yazılması

Şimdi ise Home Controller’ ında PostAddArticle Action’ unun yazılması işlemini gerçekleştireceğiz. Bu Action içinde ilk olarak resmin proje dizininde bir dosyaya yüklenmesi ve daha sonra eğer dosya eklendiyse makale’ ye ait bilgililerin veritabanına kaydedilmesi işlemleri gerçekleştirilecektir. Resimleri application klasörü ile aynı düzeyde uploads adında bir klasörün altında ArticleImages klasörü altında saklayacağım. PostAddArticle Action’ una ait kodlar aşağıdaki gibidir.

Şimdiye kadar yazdığımız kodları test etmek için formda bulunan alanları dolduralım ve ekleme işlemini gerçekleştirelim.

Dosya Yükleme Form Sayfası

Ekle butonuna bastıktan sonra eğer herşey yolundaysa yazdığımız kod gereği Makale bilgilerin veritabanına eklenmesi, Makaleye ait resmin belirttiğimiz konuma yüklenmesi ve son olarak ta Home Controller’ ının Index Action’ una yönlenmeniz gerekiyor.

Makalelerin Anasayfada Listelenmesi

Makalelerin anasayda listelenmesi için Home Controller’ ına ait Index Action’ unda veritabanından makalelerin çekilme işlemi yapılacak ve veritabanından çekilen makaleler View’ e gönderilecek. Index Actionun’ da yapacağımız işlemlerden sonra Home Controller’ ına ait kodlar aşağıdaki gibi olacaktır.

Şimdi ise Index View dosyasına gönderilen makalelerin listeleme işlemi için Index View’ inde aşağıdaki kodları yazmamız gerekmektedir. Konumuzla alakalı olmadığından tasarıma pek dikkat etmiyorum fakat eğer siz isterseniz Bootstrap Framework’ ünü kullanarak şık tasarımlar elde edebilirisiniz.

Bu işlemlerden sonra anasayfaya ait görüntü aşağıdaki gibi olacaktır.

Dosya Yükleme Anasayfa

Codeigniter Dersleri eğitim setinin 9. yazısını burada noktalıyorum. Bu yazımızda Codeigniter Dosya yükleme konusundan bahsettik. Konu ile ilgili sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm Codeigniter Dersleri‘ ne buradan ulaşabilirsiniz.

 

Hüseyin Göztok

Bilgisayar Mühendisi - Erciyes Üniversitesi (Lisans) 2013 - 2018

Yorum Yaz

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?