Yazılım,

Php ile Dosya Upload

Upload Formu Oluşturma

Php de dosya gönderme işlemi için html form etiketimizi POST olarak ayarlamalı ve enctype parametresi vermeli inputumuzu type=”file” olarak eklemeliyiz. Aşağıdaki örnek basitçe bir upload formunu göstermektedir.

 

<form action="dosyaal.php" method="post" enctype="multipart/form-data">
   <input type="file" name="dosya" />
   <input type="submit" value="Gönder" />
</form>

Oluşturduğumuz form aşağıdaki gibi görünecektir.

Gönderilen Dosyayı kontrol etme, alma ve işleme

Yukardaki formda dosyanın gönderildiği “dosyaal.php” ye bakacak olursak: Önce dosyanın seçildiğini kontrol etmek için isset kullanacağız. POST la gönderilen veriler nasıl $_POST değişkeninde tutuluyorsa dosyalar için de $_FILES  değişkeni kullanılır. Yukarda name parametresine “dosya” dediğimiz için göderdiğimiz dosyanın ayrıntıları $_FILES[‘dosya’] değişkeninde tutuluyor.

if(isset($_FILES['dosya'])){ //Dosya tanımlanmış mı
   $hata = $_FILES['dosya']['error']; 
   if($hata != 0) { //Upload sırasında hata var mı
      echo 'Yükleme sırasında hata oluştu.';
   } else {
      $boyut = $_FILES['dosya']['size'];
      if($boyut > (1024*100)){ //Dosya boyutu 100 kb dan büyük mü
         echo 'Dosya 100KB den büyük olamaz.';
      } else {
         $tip = $_FILES['dosya']['type']; //Dosyanın tipi
         $isim = $_FILES['dosya']['name']; //Dosyanın ismi
         $uzanti = explode('.', $isim); 
         $uzanti = $uzanti[count($uzanti)-1]; //Dosya isminden uzantiyi aldik
         if($tip != 'image/jpeg' || $uzanti != 'jpg') { //Tipi resim ve uzantısı jpg değilse
            echo 'Sadece JPG türünde dosyaları gönderebilirsiniz.';
         } else {
            $gecicidosya= $_FILES['dosya']['tmp_name']; //Dosyanın geçici tutulduğu yer
            copy($gecicidosya, 'resimler/' . $_FILES['dosya']['name']); //Geçici dosyayı koplaya
            echo 'Dosya upload edildi.';
         }
      }
   }
}

Yukardaki örnekte, sunucumuza zarar verebilecek zararlı dosya türleri için kontroller koyduk ve istediğimiz boyut tip ve uzantıdaki dosyaları copy ifadesi ile istediğimiz yere taşıdık. Kodun içindeki commentler umarım açıklayıcı olmuştur.

Php