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.