• 23-10-2009, 14:24:11
    #1
    Arkadaşlar, çoklu dosya upload edemiyorum hazır sınıflar denedim ama istediğim sonucu vermedi yani veritabanına kaydedemedim. Kendim tek dosya upload edebiliyorum veritabanınada kaydedebiliyorum ama bunu nasıl çoklu dosyaya çeviricem çözemedim yardımcı olursanız sevinirim. Kodları aşağıda veriyorum.
    form.php
    <form action="yukle.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
      <input type="file" name="file" id="file" />
      <br />
      <input type="submit" name="Yükle" id="Yükle" value="Submit" />
    </form>
    yukle.php
    $ayarlar['klasor'] = 'upload/';
    function uzanti_bul($dosyaadi){
    	$dosyaadi = strtolower($dosyaadi);
        return end(explode(".", $dosyaadi));
    }
    
    $rand			= substr(md5(time()),0,10);
    $kaynak			= $_FILES['file']['tmp_name'];
    $isimkucult		= strtolower($_FILES['file']['name']);
    $isimbol		= ".".end(explode(".", $isimkucult));
    $isim			= $rand.$isimbol; 
    $tip			= $_FILES['file']['type'];
    $buyukluk		= $_FILES['file']['size'];
    $birmb			= 1024*1024;
    
    if( is_uploaded_file($kaynak) ){
    		if($buyukluk < $birmb ){
    		 	if(uzanti_bul($isim) == 'jpg' || uzanti_bul($isim) == 'jpeg'  || uzanti_bul($isim) == 'gif' || uzanti_bul($isim) == 'png'){	
    				move_uploaded_file( $kaynak,$ayarlar['klasor'].$isim);
    				$mesaj 			= "Dosya Yüklenmiştir";
    				$resimkayit 	= $ayarlar['klasor'].$isim;
    			}else{
    				$mesaj = 'Dosya Uzantısı Geçerli Değil.';			
    			}
    		}else{
    			$mesaj = 'Dosya Sınırı : 1Mb';
    		}
    }else{
    	$mesaj = "Dosya Seçilmedi!";
    }
    
    echo "$mesaj";
    mysql_query("INSERT INTO tablo (resim) VALUES ('$resimkayit')");
    Yardımcı olursanız sevinirim, teşekkürler..
  • 23-10-2009, 15:46:53
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    <form action="upload.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
      <input type="file" name="file[]" id="file" /> 
      <input type="file" name="file[]" id="file" /> 
      <input type="file" name="file[]" id="file" /> 
      <input type="file" name="file[]" id="file" /> 
      <input type="file" name="file[]" id="file" /> 
      <br /> 
      <input type="submit" name="Yükle" id="Yükle" value="Submit" /> 
    </form> 
    </br>
    <?php
    $say=count($_FILES['file']['name']);
    for($i=0;$i<=$say;$i++){
    	echo $_FILES['file']['name'][$i];
    	echo '</br>';
    	echo $_FILES['file']['tmp_name'][$i];
    	echo '</br>';
    	echo $_FILES['file']['size'][$i];
    	echo '</br>';
    }
    ?>
    Yukardaki kodlara bakarak mantığı kavrayıp sorunu çözebilirsin.
  • 23-10-2009, 15:47:39
    #3
    S4l1h adlı üyeden alıntı: mesajı görüntüle
    <form action="upload.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
      <input type="file" name="file[]" id="file" /> 
      <input type="file" name="file[]" id="file" /> 
      <input type="file" name="file[]" id="file" /> 
      <input type="file" name="file[]" id="file" /> 
      <input type="file" name="file[]" id="file" /> 
      <br /> 
      <input type="submit" name="Yükle" id="Yükle" value="Submit" /> 
    </form> 
    </br>
    <?php
    $say=count($_FILES['file']['name']);
    for($i=0;$i<=$say;$i++){
        echo $_FILES['file']['name'][$i];
        echo '</br>';
        echo $_FILES['file']['tmp_name'][$i];
        echo '</br>';
        echo $_FILES['file']['size'][$i];
        echo '</br>';
    }
    ?>
    Yukardaki kodlara bakarak mantığı kavrayıp sorunu çözebilirsin.
    kısa ve öz.
  • 23-10-2009, 16:32:59
    #4
    teşekkürler, bu şekilde 3 dosya yüklemeye çalıştım isimlerini yazdırabiliriyorum üçünün ama sadece 1 tanesini upload ediyor. :s
  • 23-10-2009, 16:34:14
    #5
    İşin içine javascriptide katıp daha güzel bişey elde edebiliriz.
    <script type="text/javascript">
    function alan_ekle(){
    var s='</br><input type="file" name="file[]" id="file" />';
    resim=document.getElementById('kapsar');
    resim.innerHTML = resim.innerHTML + s;
    }
    </script>
    <form action="upload.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
    <div id="kapsar"> 
      <input type="file" name="file[]" id="file" /> 
    </div>
      <br /> 
    <input type="button" value="Alan Ekle" onclick="javascript:alan_ekle();">
      <input type="submit" name="Yükle" id="Yükle" value="Submit" /> 
    </form> 
    </br>
    <?php
    $say=count($_FILES['file']['name']);
    for($i=0;$i<=$say;$i++){
    	if($_FILES['file']['name'][$i]!=""){
    		echo $_FILES['file']['name'][$i];
    		echo '</br>';
    		echo $_FILES['file']['tmp_name'][$i];
    		echo '</br>';
    		echo $_FILES['file']['size'][$i];
    		echo '</br>';
    	}
    }
    ?>
  • 23-10-2009, 16:40:53
    #6
    Çalıştırabilsem javayıda katıcamda
  • 23-10-2009, 17:17:07
    #7
    cocainer adlı üyeden alıntı: mesajı görüntüle
    teşekkürler, bu şekilde 3 dosya yüklemeye çalıştım isimlerini yazdırabiliriyorum üçünün ama sadece 1 tanesini upload ediyor. :s
    Yanlış anlama ama kodları çorba şeklinde yazmışsın hata ayıklamada kod düzeni çok önemlidir.Neden bir fonksiyon yazmıyorsunki?
    Mesela şöyle bişey olabilir.
    <script type="text/javascript">
    function alan_ekle(){
    var s='</br><input type="file" name="file[]" id="file" />';
    resim=document.getElementById('kapsar');
    resim.innerHTML = resim.innerHTML + s;
    }
    </script>
    <form action="upload.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
    <div id="kapsar"> 
      <input type="file" name="file[]" id="file" /> 
    </div>
      <br /> 
    <input type="button" value="Alan Ekle" onclick="javascript:alan_ekle();">
      <input type="submit" name="Yükle" id="Yükle" value="Submit" /> 
    </form> 
    </br>
    <?php
    $maxboyut=1024*1024;
    $gecerli=array('jpg','jpeg','gif','png');
    $klasor='upload/';
    function uzanti_bul($dosyaadi){ 
        $dosyaadi = strtolower($dosyaadi); 
        return end(explode(".", $dosyaadi)); 
    }
    function dosya_boyut($boyut){
    	global $maxboyut;
    	return ($maxboyut < $boyut) ? True : False;
    }
    function uzanti_kontrol($isim){
    	global $gecerli;
    	$uzanti=uzanti_bul($isim);
    	return !in_array($uzanti,$gecerli) ? True : False;
    }
    function yukle($dosya,$yeni){
    	global $klasor;
    	return move_uploaded_file($dosya,$klasor.$yeni) ? True : False;
    }
    $say=count($_FILES['file']['name']);
    for($i=0;$i<=$say;$i++){
    	if($_FILES['file']['name'][$i]!=""){
    		$isim=$_FILES['file']['name'][$i];
    		$boyut=$_FILES['file']['size'][$i];
    		$tmpisim=$_FILES['file']['tmp_name'][$i];
    		$uzanti=uzanti_bul($isim);
    		$yeni=substr(md5(time()),0,10).'.'.$uzanti;
    		dosya_boyut($boyut) ? die('Dosya Boyutu') : '';
    		uzanti_kontrol($isim) ? die('Uzantı Hatası') : '';	
    		$dosyalar[]=yukle($tmpisim,$yeni) ? $yeni : die('Dosya Kopyalanamadı');
    	}
    }
    if($dosyalar){
    	echo '<h2>Yüklenen Dosyalar</h2>';
    	print_r($dosyalar);
    }
    ?>
  • 23-10-2009, 17:26:48
    #8
    Teşekkür ederim, php de yeni sayılırım olabildigince kodları duzgun yazmaya çalışıyorum aslında.. function için biraz daha zamanım var gibi biraz daha kendimi geliştirdikten sonra function ve class'lara girerim düşüncesindeydim.

    Ayrıca verdiğiniz koddada yuklenen dosyaları ekrana yazdırıyor ama sadece 1 tanesini yüklüyor sorun nedir acaba?