PHP ile Basit Dosya Yükleme

PHP ile Dosya Yükleme

Eğer ciddi projeler yapmaya başladıysanız kendi yazılımlarınızda birçok yerde dosya yükleme işlemine ihtiyaç duyacaksınız. Örneğin bir e-ticaret sitesinde ürün resmi yükleme, bir personel sisteminde personel fotoğrafı yükleme, İnsan Kaynakları sitesinde pdf şeklinde CV yükleme gibi birçok projede bu yazımızda anlattıklarımızı kullanabilirsiniz.

İlk önce basit bir dosya yükleme (file upload) uygulaması yapıp, daha sonraki yazılarımızda aşama aşama daha gelişmiş örnekler yapacağız. Şimdi örneğimize geçelim.

Aşağıdaki kod satırı ile FILE(dosya) nesnesinin html kodu olarak kullanımını görmektesiniz. Bu kod satırını yerleştirdiğiniz tüm formlarda dosya yükleme butonu ve bir metin kutusu belirecektir.

<input type="FILE" name="dosya">

Şimdi aşağıdaki dosya.php ve dosyayukle.php dosyasını aynı klasöre yerleştiriniz. Örneğin www içinde yeni açacağınız upload klasörü olabilir. Sonra upload klasörü içinde yuklenendosyalar adında bir klasör daha oluşturunuz, yüklenecek dosyaları buraya atacağız.


dosya.php içeriği

<html>
<head> <title>Dosya yükleme</title> <meta charset="utf-8">
</head>
<body>
<form enctype="multipart/form-data" action="dosyayukle.php"  method="POST">
 
<table border="1" cellpadding="4" align="center">
<tr>
<td>Dosya seçiniz:</td>
<td><input type="FILE" name="dosya"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Yukle"></td>
</tr>
</table>
</form>
</body>
</html>



dosyayukle.php içeriği

<html>
<head>
<title>Dosya yükleme</title><meta charset="utf-8">
</head>
<body> <center>
<?php
$dizin = 'yuklenendosyalar/';
$yuklenecek_dosya = $dizin . basename($_FILES['dosya']['name']);
 
if (move_uploaded_file($_FILES['dosya']['tmp_name'], $yuklenecek_dosya))
{
    echo '<img src="tamam.jpg" width="100"><br>';
echo "Dosya başarıyla yüklendi.<br>";
 
} else {
    echo "Dosya yüklenemedi!\n";
}
?>
</center>
</body>
</html>
 
Yukarıdaki kod satırlarında yapılan işlemi kısaca açıklayalım. dosya.php'nin action olayında dikkat edecek olursanız "dosyayukle.php" çağrılmaktadır. Diğer önemli nokta ise form tanımı yapılırken enctype="multipart/form-data"  şeklinde bir parametrenin gelmiş olması. Dosya yükleme nesnesini kullanacağınız her yerde bu form parametresini kullanmayı unutmuyoruz. 

Hatırlayacak olursanız, dosya.php dosyasında, FILE nesnesinin adını dosya olarak vermiştik. <input type="FILE" name="dosya"> şeklinde tanımlamıştık. dosyayukle.php içinden de bu nesneye yüklenen dosya ismini  $_FILES['dosya']['name'] şeklinde alıyoruz. 
 
PHP yüklenen dosyaya ilk önce kendisi bir isim vererek geçici (TEMP) bir dizine atıyor. Daha sonra verilen bu ismi biz değiştiriyoruz. Burada move_uploaded_file($_FILES['dosya']['tmp_name'], $yuklenecek_dosya) komut satırı ile geçici dosyanın adını değiştirerek yuklenendosyalar dizinine atıyoruz. 


 
Burada biz basit olsun diye dosya isminde değişiklik yapmadık, profesyonel projelerde her dosyaya farklı bir isim vererek saklamalısınız, yüklenen dosyalar aynı isimlerde olurlarsa, bir diğerinin üzerine yazacağından veri kaybı olacaktır.

Sonuçta yukarıdaki gibi bir ekran görüntüsü ile karşılaşıyoruz. Linux sistemlerde dosya yükleme işlemini yaparken, dosya yükleyeceğiniz klasöre yazma yetkisini vermeyi unutmayınız.

Mutlu kodlamalar,
Aralık 2014

Oğuzhan TAŞ
Bookmark and Share