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.