PHP – Upload

PHP ile ,sunucuya dosya yüklemek mümkündür.

Dosya-Yükle Formu oluşturma

Kullanıcılara dosya yükleme olanağı vermek kullanımı ve proje değerini attırıcı bir etkendir.

Şimdi aşağıdaki dosya yükleme formuna göz gezdirelim:

<html>

<body>

<form action=”upload_file.php” method=”post”

enctype=”multipart/form-data”>

<label for=”file”>Dosya Adı:</label>

<input type=”file” name=”file” id=”file” />

<br />

<input type=”submit” name=”submit” value=”Gönder” />

</form>

</body>

</html>

Yukardaki formda dikkat edilecek noktaları belirleyelim: 

  • <form> tagının attribute değerine bakacak olursak, enctype=”multipart/form-data” form onay işleminde dosya upload işleminin belirteci olarak görev alır.
  • <input> tagında type=”file” attribute değeri post metoduyla gönderilecek bir dosyanin varlığını gösterir.
  • Not: Kullanıcılara dosya yükleme izni vermek aslında büyük riskleri ortaya çıkarır.Sadece güvenilir kullanıcılara izni vermenizde büyük yarar var.


Upload Scripti Oluşturmak“upload_file.php” dosyasında dosya aktarım için gerekli scriptleri oluşturduk,şimdi inceleyelim;

<?php

if ($_FILES[“file”][“error”] > 0)

{

echo “Hata: ” . $_FILES[“file”][“error”] . “<br />”;

}

else

{

echo “Yükle: ” . $_FILES[“file”][“name”] . “<br />”;

echo “Tür: ” . $_FILES[“file”][“type”] . “<br />”;

echo “Boyut: ” . ($_FILES[“file”][“size”] / 1024) . ” Kb<br />”;

echo “Yükleme Yeri: ” . $_FILES[“file”][“tmp_name”];

}

?>

PHP $_FILES değişkeni kullanarak,uzak bağlantı kurulan istemci bilgisayara dosya aktarımı sağlanabilir.

Scriptlerde kullandığımız parametrelere bakalım:

  • $_FILES[“file”][“name”] – aktarılan dosyanın adı
  • $_FILES[“file”][“type”] – dosyanın türü(uzantısı)
  • $_FILES[“file”][“size”] – byte olarak dosyanın boyutu
  • $_FILES[“file”][“tmp_name”] – dosyanın server üzerinde yüklendiği temp klasörünün adı
  • $_FILES[“file”][“error”] – Dosya yükleme sonrası oluşam hata kodu

Dosya yüklemeni basit bir metodunu yazdık. Güvenlik sebebiyle,daha fazla ayrıntı ve kısıtlamalar eklemenizi tavsiye ederim.


Upload KısıtlamalarıBu script örneğimizde dosya yükleme işlemine bir kaç sınırlama daha getirdik.Kullanıcı yanlızca “.gif” veya “.jpeg” uzantılı dosyalar yükleyebilir ve yüklenecek dosya boyutu maximum 20 kb ile sınırladık:

<?php

if ((($_FILES[“file”][“type”] == “image/gif”)

|| ($_FILES[“file”][“type”] == “image/pjpeg”))

&& ($_FILES[“file”][“size”] < 20000))

{

if ($_FILES[“file”][“error”] > 0)

{

echo “Hata: ” . $_FILES[“file”][“error”] . “<br />”;

}

else

{

echo “Dosya Adi: ” . $_FILES[“file”][“name”] . “<br />”;

echo “Dosya Tipi: ” . $_FILES[“file”][“type”] . “<br />”;

echo “Boyut: ” . ($_FILES[“file”][“size”] / 1024) . ” Kb<br />”;

echo “Saklandığı Yer: ” . $_FILES[“file”][“tmp_name”];

}

}

else

{

echo “Geçersiz Dosya file”;

}

?>


Yüklenen Dosyayı KaydetmekÖnceki örneklerimizde yüklenen dosyalarımızı sunucu üzerinde geçici bir klasörde sakladık

Geçici olarak kopyalanan dosya script sona erdiği anda kaybolur.Dosyamızı yerleştirmek için başka bir hedefe yönlendirmemiz gerekir;

<?php

if (($_FILES[“file”][“type”] == “image/gif”)

|| ($_FILES[“file”][“type”] == “image/pjpeg”)

&& ($_FILES[“file”][“size”] < 20000))

{

if ($_FILES[“file”][“error”] > 0)

{

echo “Hata Kodu: ” . $_FILES[“file”][“error”] . “<br />”;

}

else

{

echo “Dosya Adı: ” . $_FILES[“file”][“name”] . “<br />”;

echo “Dosya Tipi: ” . $_FILES[“file”][“type”] . “<br />”;

echo “Boyutu: ” . ($_FILES[“file”][“size”] / 1024) . ” Kb<br />”;

echo “Geçici Dosya: ” . $_FILES[“file”][“tmp_name”] . “<br />”;

if (file_exists(“upload/” . $_FILES[“file”][“name”]))

{

echo $_FILES[“file”][“name”] . ” dosyası zaten yüklenmiş. “;

}

else

{

move_uploaded_file($_FILES[“file”][“tmp_name”],

“upload/” . $_FILES[“file”][“name”]);

echo “yerleştirildiği hedef: ” . “upload/” . $_FILES[“file”][“name”];

}

}

}

else

{

echo ” geçersiz dosya”;

}

?>

Yukarıdaki scriptimiz dosyanin önceden var olup olmadığını kontrol eder.Eğer yoksa dosyayı belirlenen hedefe kopyalar.,

Not: Örneğimiz yüklenen dosyayı “upload” adında bir klasörde saklıyor.

7 thoughts on “PHP – Upload

  • Şu anda bunu Ajax ile yapmaya çalışıyorum da, acaba “submit” yerine normal bir “button” koyup ona “onclick” versem, bir sorun olur mu dersin?

  • Sitemde bu örneğin çoklu versiyonunu yaptım,ama çok resim olduğu için yüklenmesi zor oluyor biraz bekletiyor yani,
    Ziyaretçiye dosyalar yüklenirken yükleniyor mesajını yüklemeyle orantılı olarak nasıl görüntüleyebilirim. Yükleniyor ekranı hakkında biraz ipucu verirsen sevinirim.

  • Javascript kullanmak daha kullanışlı olur şenol. Bana sorarsan , ajax uygulamalarından birini kullan, her istediğini kolayca yapabilirsin ajax ile.
    Şuradaki uygulamaları takip edebilirsin. Eminim işine yarayacak bi script bulursun…

  • Resim upload formunda default olarak tüm formatlarda dosya seçmemize izin veriyor. Ve dosya’nın türünü denetlememiz dosya sunucununn temp klasörüne yüklendikten sonra oluyor.
    Hem sunucuda gereksiz yer kaploıyor. Hemde güvenlik risklerine sebep oluyor. Bilgisayardan dosya seçme penceresinde örneğin sadece JPG GIF dosyalarının ve belirtilen boyuttan küçük dosyaların seçilebilmesini ve sağlayan PHP ,HTML veya AJAX kodu aradım, bulamadım.
    ////
    Hem php de type kontrolü yapabiliroyrım ama FLV dosyalarını ayıramıyorum. yardımcı olurmusun?

  • Arkadaşlar bana video flash ve zipli dosyaları yükleyen bir upload scripti lazım yardımlarınızı bekliyorum. mai atarsanız sevinirim

  • “Yüklenen Dosyayı Kaydetmek” kısmındaki kodları nedense çalıştıramadım. Tekrar çalışıp çalışmadığını test eder misiniz acaba?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir