logo
Samet Karaca    26.05.2018    93 Görüntüleme     Yorum
Bu dersimizde post metoduyla formdan dosya upload etmeyi ele alacağız. Dosya upload etmek için kullanacağımız bir başka süper global değişkenimiz olan $_FILES değişkenimizi kullanacağız. Dosya yüklemek için öncelikle bir form oluşturuyoruz. Formumuzun method kısmına POST özelliği veriyoruz. Aynı dosya üzerinde resim upload edeceğimiz için action kısmını boş bırakoyoruz ve forma enctype="multipart/form-data" etiketini ekliyoruz. Ardından type özelliği "file" olan ve name özelliği "dosya" olan bir input ve bir de gönder butonu ekliyoruz:
<form method="post" action="" enctype="multipart/form-data">
	<input type="file" name="dosya"/>
	<input type="submit" value="Yükle" />
</form>
Yukarıdaki gibi HTML ile formumuzu oluşturduysak, gelelim asıl mesele olan dosya yükleme meselesine. Buradan sonraki kısmı PHP ile yapıyoruz. Şimdi $_FILES süper global değişken içerisinde hangi bilgileri elde edebileceğimize bir gözatalım: $_FILES['dosya']['name'] : Dosyanın bilgisayardaki adını döndürür. $_FILES['dosya']['type'] : Dosya mim tiplerini döndürür. $_FILES['dosya']['size'] : Dosyanın byte cinsinden değerini döndürür. $_FILES['dosya']['tmp_name'] : Yüklenen dosyanın sunucuda arabellekteki adı ve konumudur. $_FILES['dosya']['error'] : Yükleme sırasında hata oluşursa, oluşan hatanın kodunu döndürür. Şimdi dosyamızı nasıl yükleyeceğimize bakalım: Dosyanın yüklenmesi ara bellekten kalıcı belleğe yüklenmesi için move_uploaded_file(); fonksiyonunu kullanacağız. Bu fonksiyon iki adet parametre alır ve true ya da false olmak üzere iki ayrı sonuç döndürür. Birinci parametresi dosyanın arabellekteki diziniyle birlikte dosya adı , ikinci parametresi ise dosyanın kalıcı olarak saklanacağı dizinle birlikte dosya adıdır. Şimdi kodlarımızı yazalım;
<?php
	if($_FILES['dosya']){ // Eğer yüklenecek dosya varsa
		if($_FILES['dosya']['error'] == 0){ // Eğer dosyayı ara belleğe almada hata yok ise
			$yukle = '../ders/'.$_FILES['dosya']['name']; // Dizini ve dosya adını birleştirip yükle değişkenine atıyoruz
			if(move_uploaded_file($_FILES['dosya']['tmp_name'], basename($yukle))){ // Eğer arabellekteki dosya istediğimiz dizine yüklendiyse
				echo "dosya başarıyla yüklendi"; // Kullanıcıya dosyanın başarıyla yüklendiğini söyle.
			}else{
				echo "Dosya yüklenirken bir hata ile karşılaşıldı."; // Dosya ara bellekten kalıcı belleğe yüklenirken hata verdiyse
			}
		}else{
			echo "Dosya yüklenirken bir hata ile karşılaşıldı."; // Dosya arabelleğe alınırken hata verdiyse
		}
	}
?>
$_FILES['dosya']['name'] kodu ile dosya adını ve uzantısını aldığımıza göre artık bu dosyanın uzantısını kontrol ederek yüklemeye izin verebiliriz. Bunun için phpinfo() fonksiyonunu kullanabiliriz. Örnek:
<?php
	/* 
	* Önce dosya bilgisini phpinfo() fonksiyonuna gönderelim
	* ve sonuçları $ext dizisine aktaralım
	*/
	$ext = pathinfo($_FILE['dosya']['name']);
	/*
	* atdından $ext dizisinin extension indisini alıp $uzanti değişkenine aktaralım
	*/
	$uzanti = $ext['extension'];
	if($uzanti == "zip"){ // Eğer $uzanti değişkenimizin deperi "zip" ise
		echo "Dosya kabul edildi";
	}else{ // $uzanti değişkenimizin değeri "zip" değilse
		echo "Yalnızca zip uzantılı dosyalar kabul edilebilir";
	}
?>
Görüldüğü gibi dosyamızın uzantı bilgisini aldık. Şimdi yükleme aşamasında nasıl kullanacağımızı bakalım. Kodlarımız aşağıdaki gibi olacak;
<?php
	if($_FILES['dosya']){ // Eğer yüklenecek dosya varsa
		$ext = pathinfo($_FILE['dosya']['name']); // Dosya bilgilerini al
		$uzanti = $ext['extension']; // uzantıyı $uzanti değişkenine aktar
		if($uzanti == "zip"){ // Eğer $uzanti değişkenimizin deperi "zip" ise
			if($_FILES['dosya']['error'] == 0){ // Eğer dosyayı ara belleğe almada hata yok ise
				$yukle = '../ders/'.$_FILES['dosya']['name']; // Dizini ve dosya adını birleştirip yükle değişkenine atıyoruz
				if(move_uploaded_file($_FILES['dosya']['tmp_name'], basename($yukle))){ // Eğer arabellekteki dosya istediğimiz dizine yüklendiyse
					echo "dosya başarıyla yüklendi"; // Kullanıcıya dosyanın başarıyla yüklendiğini söyle.
				}else{
					echo "Dosya yüklenirken bir hata ile karşılaşıldı."; // Dosya ara bellekten kalıcı belleğe yüklenirken hata verdiyse
				}
			}else{
				echo "Dosya yüklenirken bir hata ile karşılaşıldı."; // Dosya arabelleğe alınırken hata verdiyse
			}
		}else{
			echo "Yalnızca zip uzantılı dosyalar kabul edilebilir";
		}
	}
?>

  • Yazar : Samet Karaca
  • Ekleme Tarihi : 26.05.2018
  • Görüntülenme : 93
  • Kategorideki diğer Dersleri : PHP
  • Facebook Twitter Google Plus Freelyshout Youtube Web Site
Bu Dersi Beğendiniz mi?

0% YARARLI

KATEGORİLER