Sunucuya Çoklu Dosya Yükleme

 bcakir
 21 Aralık 2011

Merhaba arkadaşlar, daha önce dosya yükleme ve silme işlemini sizlere anlatmıştım. Bu yazımda ise önce yaptığımız uygulamayı geliştirip çoklu dosya yükleme uygulaması yapacağız. Siz isterseniz önceki yazıdan yararlanıp silme gibi diğer işlemleri de ekleyebilirsiniz. Uygulamamızın içeriği; JQuery ile istenilen kadar dosya yükleme alanı açıp, Php ile yüklenmek istenilen dosyaları sunucuya aktarma işlemini içerecek. Uygulamanın temel işlevi bu şekilde olacak, şimdi geliştirme işlemine başlayalım. Unutmadan, uygulamayı sadece bir sayfada geliştireceğim. Bundan dolayı bütün kodları index.php sayfasına yerleştirip, kaydedin.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-9" />
<title>Çoklu Dosya Yükleme</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
var a=0;
function yeni_ekle(){
    a++;
    var $sonDiv = $("#div"+(a-1));
    var $div = $("<div/>").attr("id","div"+a).insertAfter($sonDiv);
    var $input = $sonDiv.find("input").clone().val('');
    $input.appendTo($div);
}
</script>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="index.php">
<div id="div0"><input type="file" name="file[]" class="multi" /></div>
<div>
    <a href="#" onclick="yeni_ekle()">Bir Dosya Daha Ekle</a>
    <input type="submit" name="submit" value="Yükle" />
</div>
</form>
</body>
</html>

Yukarıda uygulamamızın form elemanları kısmını yaptık. Burada, kullanıcı yüklemek istediği bütün dosyaları seçme işlemini yapacak. Mantığı ise JQuery kütüphanesinin clone() kodu ile var olan dosya seçme alanını kopyalayarak çoğaltıyoruz. Bundan dolayı da yeni form elemanı ekleme işlemi çok kolaylaşmış oluyor. Şimdi de bu dosyaların sunucuya yüklenme işlemini yapalım.

<?php
if(isset($_FILES['file']['name'])){
	$say=count($_FILES['file']['name']);
	for($i=0;$i<$say;$i++){
		if($_FILES['file']['name'][$i] != null){
			$isim = $_FILES['file']['name'][$i];
			$yer = $_FILES['file']['tmp_name'][$i];
			$tip = $_FILES['file']['type'][$i];
			$boyut = $_FILES['file']['size'][$i];

            //max dosya büyüklüğünü girin
            $max_boyut=10000000;

            if($boyut<$max_boyut){
                //yüklenecek dosyanın yeri ve ismi
                $hedef = 'yeni_'.$isim;

                //dosya yükleme işlemi
                //move_uploaded_file hata verirse, onun yerine copy kullanın
                if (move_uploaded_file($yer, $hedef)){
                    echo ($i+1).". dosya başarıyla yüklendi.<br />";
                }else{
                    echo ($i+1).'. dosya yüklenemedi.<br />';
                }
            }else{
                echo ($i+1).'. dosya 10 MB dan büyük.<br />';
            }
		}
	}
}
?>

Yukarıda sunucuya dosya yükleme işlemini adım adım anlattım. Siz bu uygulamayı geliştirebilir, tasarım giydirebilirsiniz. Böylece, bir yazımızın daha sonuna gelmiş olduk. Yararlı olması dileğiyle, hoşçakalın.

 1.843 Okunma

Bu yazıya 11 yorum yapılmış.

  1. teşekkürler güzel bir yazı olmuş

  2. Teşekkürler hocam

  3. Çok Güzel Bir Uygulama 🙂

  4. bu işlemde script kodlarında hata alıyorum
    sözdizimi hatası 4. satırda

    • Bu uygulama localde ve serverda sorunsuz çalışıyor. Yukarıdaki anlatılanları tam yaptıysanız, hata sunucunuz ile ilgili olabilir.

  5. Çok yararlı bir makale olmuş hocam. Gayet başarılı, teşekkürler.

  6. Çok teşekkür ederim hocam elinize sağlık.

  7. Merhaba
    Yukarıdaki kodlarda yüklenecek dosyanın yeri ve ismi yazan bölümde sanırım bir yanlışlık yapıyorum. Dizindeki img klasörüne yüklensin istiyorum resimler. Klasör ismini nereye yazmam gerekiyor yardımcı olabilir misiniz? Teşekkürler.

    • $yer = $_FILES[‘file’][‘tmp_name’][$i];
      ie belirtilen yer dosyanın yolu onun başına $yol =”img/” diye bir değişken oluşturur $sonyol=$yol.$yer yaparsan istediğin olmuş olur

  8. Teşekkürler.

  9. Merhaba, burada yüklediğimiz dosyaları veritabanına nasıl kayıt edebiliriz? Teşekkürler

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla JQuery, Php
Kapat