Eger sitemize yaptığınız ilk ziyaretiniz ise, Lütfen öncelikle Yardım kriterlerini okuyunuz.
Forumumuzda bilgi alışverişinde bulunabilmeniz için öncelikle Kayıt olmalısınız.
Üye olmayanlar forumumuzda hiçbir şekilde aktivite uygulayamaz;
Konu açamaz, Mesaj yazamaz, Eklenti indiremez, Özel mesajlasamaz.
Forumumuzu tam anlamıyla kullanmak için üye olabilirsiniz...
(05-11-2016, 12:23 PM)AvanT2 Nickli Kullanıcıdan Alıntı: Merhaba Arkadaşlar Ben AvanT2 Bugün Sizlere Dosya Yükleme (File Upload) Sitesi Açma (PHP) Anlatacağım.
Gerekenler:
1 Adet Domain (Bedava Domain İçin Tıkla)
1 Adet Hosting (Bedava Hosting İçin Tıkla)
Şimdi Aşağıdakileri Yaparsanız Açabilirsiniz:
PHP ile dosya yüklemek oldukça kolaydır. Dosya yükleme formunda metot olarak POST metodu kullanılır ve <form>...</form> etiketlerine enctype="multipart/form-data" özelliği eklenir.
Yüklenecek dosyayı seçmek için <input type="file" name="form_adi"> formu kullanılır.
Aşağıda örnek bir dosya yükleme formu vardır. İnceleyiniz.
Dosya seçildikten sonra yüklemenin yukle.php sayfasında yapılacağı action özelliğinde görülmektedir.
Sunucuya yüklenen bütün dosyalar geçici olarak yüklenmektedir. Bunun sebebi dosyayı kalıcı olarak yüklemeden önce özelliklerine bakmaktır. Geçici olarak yüklenen dosyanın türüne, boyutuna, adına ve daha önce yüklenip yüklenmediğine bakarsınız, eğer tüm bunlar sizin istediğiniz gibiyse bu dosyayı kalıcı olarak sunucuda istediğiniz dizine kaydedersiniz. Kalıcı olarak kaydedilmeyen dosyalar ise zaman içinde sunucudan kendiliğinden silinecektir.
Şimdi geçici olarak yüklenen dosyanın yukle.php sayfasında ne gibi özelliklerine bakacağımıza ve bunu kalıcı olarak nasıl kaydedeceğimize bakalım.
Yüklenen dosyayla ilgili özelliklere ulaşmak için iki boyutlu $_FILES dizisi kullanılır. Bu dizinin birinci boyutunun indisi dosyanın seçildiği formun adı yani name değeridir (name="dosya"). İkinci boyutunun indisleri ise sabittir ve aşağıda verilmiştir.
$_FILES["dosya"]["name"] > "dosya" isimli form elemanından yüklenen dosyanın gerçek adıdır.
$_FILES["dosya"]["tmp_name"] > "dosya" isimli form elemanından yüklenen dosyanın geçici adıdır.
$_FILES["dosya"]["type"] > "dosya" isimli form elemanından yüklenen dosyanın türüdür.
$_FILES["dosya"]["size"] > "dosya" isimli form elemanından yüklenen dosyanın byte olarak boyutudur.
$_FILES["dosya"]["error"] > "dosya" isimli form elemanından yükleme yaparken oluşan hatadır.
Unutmayınız aynı anda birden fazla dosyayı upload edebilirsiniz. Şimdi yukle.php sayfasında yüklenen dosyanın özelliklerini ekrana yazdıralım.
Yukarıdaki yukle.php sayfasında sadece, geçici olarak yüklenen dosyanın özellikleri ekrana yazdırılmıştır. Bu özellikleri kontrol ederek istenirse dosyayı kalıcı olarak kaydedebilirsiniz.
Bir dosyayı kalıcı olarak kaydetmek için move_uploaded_file($p1, $p2); fonksiyonu kullanılır. Bu fonksiyon iki parametre alır.
$p1 > Dosyanın geçici adıdır. Buraya $_FILES["dosya"]["tmp_name"] ifadesi yazılır.
$p2 > Dosyanın kalıcı yolu ve adıdır. Buraya ise istediğiniz bir yolu ve adı yazabilirsiniz.
Dosyaları kalıcı olarak kaydederken aşağıdaki sorunlardan birini yaşayabilirsiniz. Bunlara dikkat ediniz.
•Yüklenen dosyanın boyutunun çok büyük olması. Sunucuda php.ini dosyasında izin verilen boyuttan daha büyük bir dosya yüklemeye çalışmak.
•Dosyayı kalıcı olarak istenen dizine kaydederken kayıt izninin olmaması. Bunu, dizine yazma iznini vererek aşabilirsiniz.
•Dosyaya verilen kalıcı adın daha önce kullanılmış olması başka bir ifadeyle aynı dosyayı tekrar yüklemeye çalışmak. Bunu, dosyaya farklı bir ad vererek aşabilirsiniz. Yada baştan file_exists($dosya_adi) fonksiyonu ile dosyanın var olup olmadığına bakabilirsiniz.
•Dosyayı kaydederken dosya adında Türkçe'ye özgü karakterlerin ve geçersiz karakterlerin kullanılması (çÇğĞıİöÖşŞüÜ). Bu sorunu Türkçe karakterleri temizleyen bir fonksiyon tanımlayıp kullanarak aşabilirsiniz.
Örnek: Seçilen dosyayı kendi adıyla upload isimli dizine yükleyen php sayfalarını hazırlayalım. Web dizininda upload isimli bir dizin yoksa oluşturunuz ve yazma izni veriniz.
Kod:
<!--yukle.php-->
<html>
<body>
<?php
$gecici_ad=$_FILES["dosya"]["tmp_name"];
$kalici_yol_ad="upload/".$_FILES["dosya"]["name"]; // dosya kendi adıyla upload dizinine kaydedilecek
if (move_uploaded_file($gecici_ad,$kalici_yol_ad)) // eğer dosya kaydedilirse
echo "Dosya başarı ile yüklendi.";
else
echo "Yükleme başarısız!";
?>
</body>
</html>
Bu örnekte dosya, hiçbir özelliğine bakmaksızın upload dizinine kaydediliyor.
Örnek: Daha önce yüklenmemiş olan jpg resimlerini kendi adlarıyla upload dizinine yükleyelim.
<!--yukle.php-->
<html>
<body>
<?php
$gecici_ad=$_FILES["dosya"]["tmp_name"];
// dosya kendi adıyla upload dizinine kaydedilecek
$kalici_yol_ad="upload/".$_FILES["dosya"]["name"];
if (file_exists("upload/".$_FILES["dosya"]["name"])) // yüklenen dosya upload dizininde varsa
echo "Seçtiğiniz dosya daha önce yüklenmiştir.";
else{
if ($_FILES["dosya"]["type"]=="image/jpeg"){
if (move_uploaded_file($gecici_ad,$kalici_yol_ad)) // eğer dosya kaydedilirse
echo "Dosya başarı ile yüklendi.";
else
echo "Yükleme başarısız!";
}
else
echo "Lütfen jpg resmi seçiniz.";
}
?>
</body>
</html>
Örnek: Aşağıdaki şartlar sağlanırsa dosyayı kendi adıyla upload dizinine yükleyelim.
-Hata oluşmazsa
-Dosya daha önce yüklenmemişse
-Dosya gif dosyası ise
if ($_FILES["dosya"]["error"]) // hata oluştu ise
echo "Hata : ",$_FILES["dosya"]["error"];
else{
if (file_exists($kalici_yol_ad)) // yüklenen dosya upload dizininde varsa
echo "Yazdığınız ad ile bir dosya zaten kayıtlıdır.";
else{
if ($_FILES["dosya"]["size"]>500*1024)
echo "500KB'dan küçük bir dosya seçiniz.";
else{
if ($_FILES["dosya"]["type"]=="application/pdf"){
if (move_uploaded_file($gecici_ad,$kalici_yol_ad)) // eğer dosya kaydedilirse
echo "Dosya başarı ile yüklendi.";
else
echo "Dosya yükleme başarısız.";
}
else
echo "Lütfen PDF dosyası seçiniz.";
}
}
}
?>
</body>
</html>
Örnek: Şimdi tam bir dosya yükleme örneği verelim. Burada dosyalar kendi adlarıyla upload dizinine kaydedilecektir. Tabiki Türkçe'ye özgü karakterler temizlendikten sonra. Bunun için bir fonksiyon tanımlayıp kullacağız. Ayrıca yükleme aynı sayfada yapılacaktır.
if ($_FILES["dosya"]["error"]) // hata oluştu ise
echo "<font color='green'>Hata : ",$_FILES["dosya"]["error"],"</font>";
else{
if (file_exists($kalici_yol_ad)) // yüklenen dosya upload dizininde varsa
echo "<font color='red'>Yazdığınız ad ile bir dosya zaten kayıtlıdır.</font>";
else{
if (move_uploaded_file($gecici_ad,$kalici_yol_ad)) // eğer dosya kaydedilirse
echo "<font color='green'>Dosya başarı ile yüklendi.</font>";
else
echo "<font color='red'>Dosya yükleme başarısız.</font>";
}
}
}
?>
</body>
</html>
İçerik sağlayıcı paylaşım sitesi olarak hizmet veren destek.tr15.net adresimizde 5651 Sayılı Kanun'un 8. Maddesine ve T.C.K' nın 125. Maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur.
wtsupport.10tl.net hakkında yapılacak tüm hukuksal şikayetleri iletisim linkimizden bize ulaşıldıktan en geç 3 (üç) gün içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek, gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.