Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Dosya Yükleme (File Upload) Sitesi Açma (PHP)
05-14-2016, 04:52 PM,
Durum
Offline
AvanT
Hedefim:Co Admin
Yorum Sayısı: 42
Üyelik Tarihi: Jun 2015
Rep Puanı: 0
#1
Dosya Yükleme (File Upload) Sitesi Açma (PHP)
(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.

Kod:
<!--index.php-->
<html>
<body>
   <form name="yukleme" method="post" action="yukle.php" enctype="multipart/form-data">
      Yüklenecek Dosyayı seçiniz: <input type="file" name="dosya"><br>
      <input type="submit" name="yukle" value="Yükle">
   </form>
</body>
</html>

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.

Kod:
<!--yukle.php-->
<html>
<body>
<?php
echo "<b>Yüklenen dosyanın adı:</b> ",$_FILES["dosya"]["name"],"<br>";
echo "<b>Yüklenen dosyanın geçici adı:</b> ",$_FILES["dosya"]["tmp_name"],"<br>";
echo "<b>Yüklenen dosyanın türü:</b> ",$_FILES["dosya"]["type"],"<br>";
echo "<b>Yüklenen dosyanın boyutu:</b> ",$_FILES["dosya"]["size"],"<br>";
echo "<b>Varsa yüklerken oluşan hata:</b> ",$_FILES["dosya"]["error"],"<br>";
?>
</body>
</html>

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.

Kod:
<!--index.php-->
<html>
<body>
   <form name="yukleme" method="post" action="yukle.php" enctype="multipart/form-data">
      Jpg resmi seçiniz: <input type="file" name="dosya"><br>
      <input type="submit" name="yukle" value="Yükle">
   </form>
</body>
</html>

Kod:
<!--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

Kod:
<!--index.php-->
<html>
<body>
   <form name="yukleme" method="post" action="yukle.php" enctype="multipart/form-data">
      Gif resmi seçiniz: <input type="file" name="dosya"><br>
      <input type="submit" name="yukle" value="Yükle">
   </form>
</body>
</html>

Kod:
<!--index.php-->
<html>
<body>
   <form name="yukleme" method="post" action="yukle.php" enctype="multipart/form-data">
      <table border="0">
         <tr>
            <td>Dosyanın Kalıcı Adı:</td>
            <td><input type="text" name="kalici_ad"></td>
         </tr>
         <tr>
            <td>PDF Dosyası Seçiniz:</td>
            <td><input type="file" name="dosya"></td>
         </tr>
         <tr>
            <td>&nbsp;</td>
            <td><input type="submit" name="yukle" value="Yükle"></td>
         </tr>
      </table>
   </form>
</body>
</html><!--yukle.php-->
<html>
<body>
<?php
$gecici_ad=$_FILES["dosya"]["tmp_name"];
$kalici_yol_ad="upload/".$_POST["kalici_ad"].".pdf";

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.

Kod:
<!--index.php-->
<html>
<body>
   <form name="yukleme" method="post" action="index.php" enctype="multipart/form-data">
      <table border="0">
         <tr>
            <td>Dosya Seçiniz:</td>
            <td><input type="file" name="dosya"></td>
         </tr>
         <tr>
            <td>&nbsp;</td>
            <td><input type="submit" name="yukle" value="Yükle"></td>
         </tr>
      </table>
   </form>

<?php
function turkce($metin){
   $aranan=array("ç","Ç","ğ","Ğ","ı","İ","ö","Ö","ş","Ş","ü","Ü"," ");
   $yerine=array("c","c","g","g","i","i","o","o","s","s","u","u","_");
   return str_replace($aranan,$yerine,$metin);
}

if($_POST){
   $gecici_ad=$_FILES["dosya"]["tmp_name"];
   $kalici_yol_ad="upload/".turkce($_FILES["dosya"]["name"]);

   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>


Yazı Alıntıdır.
1
05-14-2016, 04:52 PM
WWW Ara Alıntı
05-14-2016, 05:48 PM,
Durum
Offline
Ciri
Root
Administrators
Yorum Sayısı: 5,676
Üyelik Tarihi: May 2008
Rep Puanı: 0
#2
RE: Dosya Yükleme (File Upload) Sitesi Açma (PHP)
teşekkürler. çok işime yarayacak bir konu +rep
05-14-2016, 05:48 PM
Ara Alıntı


Hızlı Menü:


Şu anda bu konuyu okuyanlar: 1 Ziyaretçi

Forum Yasal Uyarı
Türkçe Çeviri: MyBBGrup
Forum Yazılımı: MyBB, © 2002-2024 MyBB Group.
Tema Yapımcısı Screwy
Uyarlama Edward

İç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.

Gizlilik Sözleşmesi - Forum Kuralları - Reklam Ver - İletişim


10tl.net Destek Forumu -

Online Shopping App
Online Shopping - E-Commerce Platform
Online Shopping - E-Commerce Platform
Feinunze Schmuck Jewelery Online Shopping