• 13-02-2010, 19:53:12
    #19
    Öncelikle böyle bir sistemi kendin yazıp ve cgi değilde php ile yapmak istiyorsan benimde izlediğim adımları izlemen gerekecek .. SSH ile server a root yetkin olması gerekiyor.. Bağlandıktan sonra aşağıdan kurulumu gerçekleştirelim..

    http://pecl.php.net/package/uploadprogress
    Yukarıdaki adresten son olan bir versionu indirmelisin yada..
    wget http://pecl.php.net/get/uploadprogress-1.0.1.tgz
    tar xvzf uploadprogress-1.0.1.tgz
    cd  uploadprogress-1.0.1
    phpize
    ./configure
    make
    make install
    Bu işlemleri yaptıktan sonra en son make install dediğinde aşağıdaki çıktıyı alacaksın
    Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-20060613/.
    Bunu kopyala lazım olacak .. Sonra php.ini dosyanı açıp editlememiz gerekecek.. Peki benim server da bir çok php.ini dosyası var hangisi gerçeği diye soruyorsan onuda aşağıdaki kod ile bulacaksın..

    php -i | grep ini
    Düzenlemek için açtıktan sonra extension_dir bölümünü bulup yolunu yukarıda bize verilen değeri giriyoruz. Yani

    extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20060613/"
    Değerleri girdikten sonra php.ini dosyamızı kapatmadan eklememiz gereken bir kod daha var oda aşağıda verdiğim kodu ekleyeceğiz. ( Nereye Eklediğiniz fark etmez )
    extension=uploadprogress.so
    Kaydedip çıkıyoruz ve Apache yi restart yapıyoruz.

    Kurulu olup olmadığını boş bir php sayfasına phpinfo(); yazıp görebiliriz . Böylelikle uploadprogress i kurmuş olduk.

    Şimdi bu uploadprogress i nasıl kullanacağımıza gelelim

    Daha önce kendim hazırladığım bir sistemin kodlarını vereceğim sana eminim çok faydası olacaktır
    Öncelikle jQuery kütüphanesini kullandığım için direkt kodları o şekilde vereceğim..

    dosya.php
    	if (@$_GET['id']) {
    		echo json_encode(uploadprogress_get_info($_REQUEST['id']));
    		exit();
    	}
    
    	if (@$_POST['UPLOAD_IDENTIFIER'])
    		exit();
    		
    		$uuid = uniqid();
    <script>
    var progress_key = '<?=$uuid;?>';
    			function beginUpload() {
    				var i = setInterval(function() { 
    					$.getJSON("dosya.php?id=" + progress_key, function(data) {
    						if (data == null) {
    							clearInterval(i);
    							location.reload(true);
    							return;
    						}
    						var percentage = Math.floor(100 * parseInt(data.bytes_uploaded) / parseInt(data.bytes_total));
    						$("#uploadprogressbar").progressBar(percentage);
    						var yazi = 'Toplam Boyut : <b>'+bytes(data.bytes_total)+'</b> - Yüklenen : <b>'+bytes(data.bytes_uploaded)+'</b>';
    #yazi olarak verdiğim değişkene veriler gelir gelmez byteup kimlikli div e yazdırıyorum böylelikle her kademede hem yüklediği kb ı hemde toplam boyutu yazdırmış oldum.
    						$("#byteup").html(yazi);
    					});
    				}, 1500);
    
    				return true;
    			}
    </script>
    İki koduda tek php dosyasına ekliyorsun ve aynı sayfaya bir tane form oluşturup post işlemi yaptırıyorsun. Tabi post işlemini yaptırırken onSubmit="beginUpload();" unutmayalım

    Kısaca anlatmaya çalıştım bir upload progress i kendimiz nasıl yapabiliriz Hazırları bana göre değil ben kendim yapmak istiyorum diyenler için birebir umarım bu yazıdan bir çok kişi faydalanır..

    Takıldığınız bir yer olursa konuya yazın cevap vereyim arkadaşlar
    Saygılar..

    Mesut Eyrice

    (önemli olan yerleri kalın ile belirttim arkadaşlar.)
  • 14-02-2010, 19:51:40
    #20
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Ajaxla, flashla uğraşmayın derim upload işi için. Üstteki mesajdaki anlatımları uzun zaman önce çok arayarak yabancı bir sitede bulup uygulamıştım. Hala sorunsuz çalışıyor. Yükleme hızı, tamamlanan % si, dosya adı gibi bilgileri anlık olarak vermektedir. Çok kullanışlıdır.