PHP Dosya Yükleme

php dosya yükleme işlemleri

PHP Dosya Yükleme, Temelde bir dosyanın belirlenen klasöre taşıma işlemidir. Taşınma işlemi esnasında belirlenen boyutta ve uzantıda dosyaları taşıma işlemi gerçekleştirebilirsiniz. Dosya işlemleri her zaman yapılması keyif veren ve yapıldığı zaman işlevsel olan bir durumdur.

PHP dosya işlemlerinin kullanılması için bir adet dosya gönderme inputları olan HTML form‘a ihtiyacımız vardır. Bu formu aşağıda birlikte oluşturalım.

 

HTML Dosya Yükleme Formu

PHP dosya gönderimini yapabilmemiz için ilk önce HTML form yapmamız gerekiyor bu işlem içinde hangi inputları kullacağımı aşağıda kodlar ile belirtiyorum.

(index.html)
HTML Dosya Yükleme Formu

  • input : file, submit
<html>
	<head></head>
	<style>table td{padding:5px 7px;}</style>
	<body>
		<form action="dosyagonder.php" method="post" enctype="multipart/form-data">
			<table border="1" style="">
				<tr>
					<td>Dosya: </td>
					<td><input type="file" name="dosya" /></td>
				</tr>
				<tr>
					<td></td>
					<td><input type="submit" value="Gönder" /></td>
				</tr>
			</table>
		</form>
	</body>
</html>

Açıklama : HTML bir tablo oluşturup içine bir dosya yükleme işlemi için input=file oluşturuyoruz ve bir tanede input=submit ile seçilen dosyayı PHP ile belirlenecek dizine gönderim işlemini yapıyoruz.

 

PHP Dosya Gönderme Sayfa İşlemi

HTML formundan çıkan dosya doğrudan form yardımı ile PHP sayfasına yönlendirilmektedir. Bu yönlendirme tamamlandıktan sonra PHP sayfasının içinde gerekli kontroller yapılıp dosyanın aktarımı yapılmaktadır. Aktarım yapılma veya yapılmama halinde kullanıcıya dosyanın aktarılıp aktarılmadığı bilgilerini verebiliriz.

dosyagonder.php

<html>
    <head></head>
    <body>
        <?php
        $directory = 'upload/';
        $temp_file = $directory . basename($_FILES['dosya']['name']);
    
        if(move_uploaded_file($_FILES['dosya']['tmp_name'], $temp_file)) {
            echo "<p style='color:#1dff03;'>Dosya gönderimi tamamlanmıştır.</p>";
        }
        else{
            echo "<p style='color:#f00;'>Dosya gönderimi başarısız olmuştur.</p>";
        }
        ?>
    </body>
</html>

Açıklama: Gönderilen dosya move_uploaded_file fonksiyonu ile gönderimi sağlanmaktadır. Bunun sonucunda gelen sonuca göre kontrol mekanizmasından geçirerek dosya taşıma işlemi yapılıp yapılmadığını renkli bir şekilde gösterimi yapılıyor.

 

Gönderilen Dosyaların Uzantılarını Kontrol Etme

Sadece belirli dosya uzantılarını yükletmek için kontrol mekanizması yardımıyla bunu yapmanız mümkündür. Aşağıdaki yapacağım örnekte dosya uzantılarını kontrol ediyorum. Aşağıdaki kodu işinize yarayan bölüme entegre edebilirsiniz.

Yüklenen dosyaların uzantılarını kontrol ettiğiniz zaman çoğu problemi geride bırakırsınız. Dosya adı aynı ancak farklı uzantılara sahip dosyaları sunucuya yükleyebilirsiniz. Bunun için dosya yüklerken uzantısına bakılması sizin için avantaj olabilir.

Kod:

<?php
    $tipi = $_FILES['dosya']['type']; //uzantıyı alıyoruz
    $isim = $_FILES['dosya']['name']; //isim alıyoruz

    $nokta = explode('.', $isim);
    $nokta = $nokta[count($nokta)-1];
    
    if($tipi != "image/jpeg" || $nokta != "jpg") {
        echo 'Bu bölümde sadece .jpg uzantılı dosya yükleyebilirsiniz.';
        exit;
    }
?>

 

Gönderilecek Dosyanın Boyutunu Kontrol Etme

Gönderilen dosyalar sunucunuzun sınırını aşabileceğinden bir sınırlama getirmeniz şarttır. Bunun için aşağıdaki PHP dosya gönderimi sınırlama yöntemini kullanmanız sizin için güvenli bir yol olacaktır. Aynı zamanda gönderilen dosyalar sunucunuz içinde hantallığa yol açan yavaşlamaların da önüne geçilecektir.

Aşağıdaki kod ile dosya boyutu kontrolü yapabilirsiniz.

Kod:

<?php
    $dosyaboyutu = $_FILES['dosya']['size'];
    if($dosyaboyutu > (1024*1024*2)){
        echo 'Dosya 2MB üstünde olamaz.';
    }
?>

Bu tarz işlemleri yapmadan önce gerekli kontrolleri yapmayı unutmayın aksi taktirde istenmeyen sonuçlara ulaşabilirsiniz. Yukarıda paylaştığım bilgiler tamamen tavsiyedir. Bir yöntem değildir. Kendi yönteminizi oluşturup devam edebilirsiniz. Hiç bir sorumluluk kabul edilmez. Hepinize şimdiden iyi çalışmalar diliyorum.

PHP Dosya Yükleme