PHP Dosya Yükleme

PHP Dosya Yükleme

Hepinize merhaba dostlarım :). Bu yazımda sizlere php programlama dilinde neredeyse sıklıkla kullanılan, içerik yönetimi (cms) sitelerinin vs kullandıkları, php programlama dilinin vazgeçilmez konularından birisi olan dosya yükleme işleminden bahsedeceğim. Neden gerekli olduğunu merak ediyorsanız dostlarım şöyle bir örnek vereyim :). Şimdi dosya yüklemek, upload etmek yerine bütün dosyalarınızı bir başka sitelere yüklediniz diyelim. Bu dosyayı güncellemeniz gerektiğinde o siteye gidip üye olup oradan güncelleyip daha sonra sitenize gelip güncellemek ne kadar zor ve yorucu olur değil mi :). Bir iki kayıt falan olsa neyse hadi 100 kayıt olsa ? İşte dostlarım bu ve bunun gibi dosya yükleme durumlarında php programlama dilinin bize sağladığı dosya yükleme işlemini kullanırız :). Heyecanınızın giderek arttığının farkındayım dostlarım :). O halde sözü daha fazla uzatmadan konuya girmek istiyorum :).

Dostlarım öncelikle dosya yükleme işlemi için php.ini dosyası içerisinden bir ayar yapmamız gerekiyor. Normalde tamam resmi alırız ama işleyemeyiz oradan bize post edilir ama post ile gelen file dosyaları gelmez. Bunun için php.ini dosyasına girip

file_uploads = On

şeklindeki gibi ayarı yapmamız lazımdır dostlarım. Bu zaten normalde default olarak bu şekilde gelecektir. Ama değilse sizin bu ayarı yapmanız lazımdır dostlarım :). Burada biz projelerimizde dosya yükleme işlemi yapacağımızı ve bunun aktifleştirilmesinin gerektiğini söylüyoruz :). Bu kısım tamam ise dostlarım gelelim yavaştan kodlarımızı yazmaya :)

Öncelikle dostlarım dosya yüklememiz için bir form sayfası oluşturalım :). Buna form.php ismini vererek kodlarımızı yazalım

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Dosya Yükleme | MFSoftware Blog</title>
</head>
<body>
      <form action="islem.php" method="post" enctype="multipart/form-data"><label>Dosya Seçmeniz Gerekiyor</label>
    <input type="file" name="dosyamiz" >
    <input type="submit" value="Yükle" name="dosya_yukle">
</form>
</body>
</html>

şeklinde dostlarım kodlarımızı yazdık. Yalnız burada değinmek istediğim iki farklı nokta var

  1. Nokta:  enctype="multipart/form-data" diyerek dostlarım bu form post edildiğinde file dosyalarını diğer taraftan yani göndermiş olduğumuz islem.php dosyasından rahatlıkla yakalayabiliriz. Ama enctype kısmını yazmazsak bu file dosyalarını yakalayamayız
  2. Nokte:  Dosya seçimleri için input alanında type kısmını file yapmamız gerekmektedir dostlarım. Text veya Number seçeneğini seçtiğimiz takdirde bu işlemi gerçekleştiremeyiz

şeklinde dostlarım noktalarımıza da değindiğimize göre artık dosyanın yüklenme aşaması için kodlarımızı rahatlıkla yazabiliriz :). Gelelim islem.php dosyamıza :).

<?php

if(isset($_FILES['dosyamiz'])){
      $hatalar= array();
      $dosya_adi= $_FILES['dosyamiz']['name'];  // dosyanın adını aldık
      $dosya_boyutu=$_FILES['dosyamiz']['size'];  // dosyanın boyutunu aldık
      $gecici_yol=$_FILES['dosyamiz']['tmp_name'];  // dosyanın geçici kaynağını aldık
      $dosta_tipi=$_FILES['dosyamiz']['type'];    // dosyanın tipini aldık
      $uzanti=strtolower(end(explode('.',$_FILES['dosya']['name'])));   // dosyanın uzantısını aldık
      
      $tip= array("jpeg","jpg","png");    // uygulamamızın desteklediği tipleri aldık
      
      if(in_array($uzanti,$tip)=== false){   // dosya tipleri destekleniiyor mu kontrol ettirdik
         $hatalar[]="jpeg,jpg,png harici dosyalar yüklenemezz";
      }
      
      if($dosya_boyutu > 2097152){     // dosya boyutu desteklenen boyuttan büyük mü kontrol ettirdik
         $hatalar[]='Azami Dosya Boyutu 2 MB Olmalıdır';
      } 
      
      if(empty($hatalar)==true){    // hatalar yok ise
         move_uploaded_file($gecici_yol,"images/".$file_name);    /// dosyayı yükle
         echo "Başarılı";
      }else{  
         print_r($hatalar);    // hata var ise hataları göster
      }
   }

?>

şeklinde dostlarım kodlarımızı yazdık. Süreç nasıl işledi diye merak ediyorsanız dostlarım gelin maddeler halinde yazalım

  1. Dosya geldi mi gelmedi mi kontrol ettirdik
  2. Dosya geldiyse dosya yükleme sürecinde herhangi bir hata oluşursa diye bir dizi oluşturduk ($hatalar = [ ] isminde)
  3. Dosyamızın adını aldık ( $_FILES['dosyamiz']['name'] şeklinde)
  4. Dosyamızın boyutunu aldık ($_FILES['dosyamiz']['size'] şeklinde)
  5. Dosyamızın geçici kaynak yolunu aldık ($_FILES['dosyamiz']['tmp_name'] şeklinde)
  6. Dosyamızın tipini aldık ($_FILES['dosyamız']['type'] şeklinde)
  7. Dosyamızın uzantısını aldık (strtolower(end(explode('.',$_FILES['dosyamiz']['name']))) şeklinde)
  8. Uygulamamızın desteklediği tipleri yazdık ($tip = array("jpeg","jpg","png") şeklinde)
  9. Gelen dosyamızın uzantısının bizim uygulamamızda destekleniyor mu desteklenmiyor mu kontrol ettirme işlemini yaptırdık (in_array($uzanti,$tip)===false şeklinde)
  10. Dosya boyutu bizim belirlediğimiz sınırı aşıyor mu kontrol ettirdik ($dosya_boyutu > 2097152 şeklinde)
  11. Hatalar var mı yok mu kontrol ettirdik (empty($hatalar)==true şeklinde)
  12. Hata yoksa dosya yükleme işlemini yap dedik (move_uploaded_file($gecici_yol,"images/".$file_name) şeklinde)
  13. Hata varsa hataları ekrana bastır dedik (print_r($hatalar) şeklinde)

şeklinde bir süreç işliyor dostlarım :). Biraz uzun ama iş görür mü diye soruyorsanız çok iş görür dostlarım :). Eğer adımlardan birisinde hata oluşursa dosya yükleme işlemini yapmayacak ve ekranımıza hata uyarısı verecektir dostlarım :).


Dostlarım php programlama dilinde resim yükleme işlemi konusunu dilim döndüğünce anlatmaya çalıştım. Umarım faydalı olmuşumdur. Başlarda biraz karmaşık veya zor gelebilir anlıyorum dostlarım. Sizin bu durum ve buna benzer zor gelmesi durumlarında yapacağınız tek şey her yazımın sonunda da dediğim gibi "İstikrarlı ve Azimli Olmak, Bolca Pratik Yapmak :)". Bu dediklerimi sadece yazılım ve teknoloji konusunda değil hayatınız boyunca hemen hemen her alanda yaparsanız dostlarım başarı sizin için kaçınılmaz olacaktır :).

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıJavascript Yüklenme Olayları (Load Events)
Sonraki YazıJavascript Tarih Fonksiyonları
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz