PHP İle Sunucuya Dosya Yükleme (Upload) İşlemi

Bu makalemizde PHP ile sunucuya en basitinden http üzerinden nasıl dosya yükleme (upload) yapılacağını göstereceğiz. Php bildiğiniz üzere web sunucu tabanlı çalışan bir dil olduğu için öncelikle sunucu tarafında çalışacak scriptimizi php ile yazıyoruz.

Aşağıdaki scripti bir dosyaya örneğin dosyagonder.php olarak isimlendirelim. Dosyanın yükleneceği dizin aşağıdaki kodda ./upload/ olarak verilmiştir. Siz değiştirebilirsiniz. Ancak sunucuda o dizinin varlığından emin olun.

<?php
    ini_set('display_errors', 'On');
    error_reporting(E_ALL);
    $target_path = "./upload/";
    $target_path = $target_path . basename( $_FILES['myfile']['name']); 

    if(move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path)) {
        echo "Dosya: ".  basename( $_FILES['myfile']['name'])." başarıyla yüklendi";
    } else{
        echo "Dosyayı yüklemeye çalışırken bir hata oluştu, tekrar deneyin!";
    }
?>

PHP normalde dosyayı sunucuya gönderdikten öncelikle geçici bir dosya oluşturur ve işlem bitince bu geçici dosyayı kaldırır. Bu dosyayı taşıma işini move_uploaded_file fonksiyonu yapmaktadır ve iki parametre ile çalışır. İlki geçici dosyanın adı, ve ikinci konulacak hedef dizin.

Şimdi bu PHP scripti çalıştırmak için standart bir HTML dosya oluşturmalıyız. Aşağıdaki kodu dosyayukle.html olarak kaydedip PHP script ile sunucudaki aynı dizine koyalım.

<html>
<body>
<form action="dosyagonder.php" method="post" enctype="multipart/form-data">
<input type="file" name="myfile"><br>
<br />
<input type="submit" name="submit" value="Gönder" />
</form>
</body>
</html>

Sonrasında sunucumuzdan dosyayukle.html çağırdığımızda yüklemek istediğimiz dosyayı seçmemizi isteyen bir buton görüntülecektir.

Elbetteki bu yaptığımız çok basit  bir örnek. Modern dünyada bu işlemi kolaylaştıracak çeşitli ajax dosya yükleme sctipleri mevcuttur. Bir kaç tanesini aşağıda listeleyelim: