PHP Dosya Upload İşlemi

Anasayfa / Blog / PHP Dersleri / Php Değişkenler / PHP Dosya Upload İşlemi


Php Değişkenler , 7 Kali Linux , 3 React JS , 1 Vue.js Dersleri , 1 Grafik Tasarım , 1 VirtualBox , 3 PHP Veri Tabanı , 5 PHP Dersleri , 13 Html Dersleri , 1 4 yıl önce yayınlandı.

PHP Dosya Upload İşlemi

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";
		}
	}
?>

 

Etiketler


Paylaş


Bağlantı Linki


Yorumlar
İlk yorumu siz yazın!

Bu konu için hiç yorum yazılmamış, ilk yorumu siz yazarak destek verin!


Yorum Yaz
E-posta adresiniz yorumlar listelenirken gizli kalacaktır.
Benimle iletişime geç

Çalışmalarımı beğendiyseniz iletişim bölümünden bana ulaşabilirsiniz. Daha fazla soru için info@mgunaydin.com adresini kullanın.