Konular

Ajax İle Dosya Göndermek.

Ajax & javascript & dom & php yakuter.

DOSYALARAjax ile Dosya Göndermek.

index.php: Betiğimizin temel dosyası ve anasayfasıdır. Dosya gönderme formu, javascript fonksiyonlarımız ve css stil seçicilerimiz bu dosyada bulunur. Dosyanın dikkatinizi çekmek istediğim kısmı javascript fonksiyonlarıdır.

JAVASCRIPT:
  1. function dosyaSil(silinecekDosya) {
  2.     if( confirm('Dosya Silinsin mi?') ) {
  3.         var sc="yap=sil&dosya="+silinecekDosya;
  4.         JXP(1, "dizin_alani", "cevap.php", sc);
  5.     }
  6. }
  7.  
  8. function yenile() {
  9.     var sc="yap=yenile";
  10.     JXP(1, "dizin_alani", "cevap.php", sc);
  11. }
  12.  
  13. function dosyaGonder(){
  14.     document.dosyaFormu.submit();
  15.     var sc="yap=gonder";
  16.     JXP(1, "dizin_alani", "cevap.php", sc);
  17.     document.dosyaFormu.reset();
  18. }

Farkettiyseniz artık AJAX nesnesi XmlHttpRequest'i çağırmak için bir ton kod ile uğraşmıyoruz. Hazır kütüphane kullanmanın faydalarından birisi de budur. Tabi konunun mantığını anlamadan da hazır kütüphane kullanmanızı kesinlikle tavsiye etmiyorum.

Javascript fonksiyonlarına dönecek olursak:
dosyaSil(dosya) fonksiyonu cevap.php dosyasına silinmesini istediğimiz dosyanın ismini gönderir. Gelen sonuç dizin_alani id'sine sahip alanda görüntülenir. Şunu da belirtmekte fayda var, gelen sonuç yine dizindeki dosyaları listeleme işlemidir.
yenile() fonksiyonu dosya listesini yenilemenizi sağlayan fonksiyondur. Tüm sayfa yerine sadece AJAX sayesinde dosya listesini yenileyebiliyoruz. Yenilerken yapılan işlem cevap.php dosyasından dizini listelemesini istemekten başka bir şey değildir ;)
dosyaGonder() fonksiyonu önce formumuzu yani gözat diyerek seçmiş olduğunuz dosyayı iframe'e gönderir, ardından cevap.php dosyasından dosya listesini yenilemesini ister ve son olarak formu sıfırlar.
Not: Dosyayı iframe'e göndermesini buradan değil, formun tanım bilgisinden target="pencere" yani pencere isimli iframe diyerek belirtiyoruz.

dizin.php: Bu dosyanın tek işlevi kendi içinde barındırdığı ve bizim düzenlediğimiz klasor değişkeni ile belirtilen dizindeki dosyaları listelemek. Bu dosyayı include('dizin.php'); diyerek anasayfada(index.php) ve cevap.php dosyasında çağırıyoruz.

PHP:
  1. <?php
  2.     $klasor = "dosyalar/"; //Burayi duzenleyin
  3.    
  4.     $sonuc='<table style="font-size:12px;">';
  5.     if ($dizin = opendir($klasor)) {
  6.         while ($dosya = readdir($dizin)) {
  7.             if ($dosya!='.' AND $dosya!='..')
  8.                 {
  9. $sonuc.= '<tr style="background-color:#EEEEEE;height:10px;border:1px dashed Gray;">';
  10. $sonuc.= '<td style="padding: 5px;" width="450" align="left">';
  11. $sonuc.= '<a href="dosyalar/'. $dosya. '">'. $dosya. '</a></td>'; //burasi onemli
  12. $sonuc.= '<td style="padding: 5px;" width="50" align="center">';
  13. $sonuc.= '[<a href="javascript:dosyaSil(''. $dosya. '');">sil</a>]</td>';
  14. $sonuc.= '</tr>';
  15.                 }
  16.             }
  17.         closedir($dizin);
  18.         }
  19.     $sonuc.='</table>';
  20.     echo $sonuc;
  21. ?>

cevap.php: Bu dosya AJAX ile bilgileri gönderdiğimiz dosyadır. İki adet işlevi bulunmakta:
1) Eğer silme işlemi seçilmişse, dosya değişkeni ile gelen dosyayı siliyor.
2) Dizindeki dosyaları dizin.php dosyasını çağırarak listeliyor.

Burada dikkatinizi çekmek istediğim konu sleep(2) fonksiyonu. Bu fonksiyon içine girilmiş olan değer boyunca(saniye) betiği bekletir. Bekletmek istedim çünkü aynı zamanda bir yandan iframe'e gönderilmiş bir dosya bulunmakta ve bu dosya siteye yüklenmekte. Diyelim ki dosyamız biraz büyük. O halde cevap.php fonksiyonundan cevap geldiğinde dosya hala yüklenmediği için yine eski dizini görebiliriz. Bu yüzden de dosyanın gönderilmediğini sanarız. Oysa ki dosya hala gönderilmektedir. Aslında buna bir tedbir olarak anasayfaya (index.php) dizin listesini yenilemek için Yenile bağlantısı koydum ama yine de bu sleep fonksiyonu da bir önlem olabilir.

PHP:
  1. <?php
  2.  
  3. $klasor = "dosyalar/"; //Burayi duzenleyin
  4.  
  5. if ($_POST['yap'] =="sil")
  6.     {
  7.     $dosyasil = $klasor.$_POST['dosya'];
  8.     $silindi=unlink($dosyasil);
  9.     }
  10.  
  11. sleep(2);
  12.  
  13. include('dizin.php');
  14. ?>

islem.php: Bu dosya iframe içinde çağırdığımız dosyadır ve form ile gönderilen dosyayı yine islem.php dosyasında bulunan klasor değişkeni ile belirttiğimiz klasöre gönderir.

PHP:
  1. <?php
  2.    
  3. $klasor = "dosyalar/"; //Burayi duzenleyin
  4. $giden = $klasor . basename($_FILES['dosya']['name']);
  5. move_uploaded_file($_FILES['dosya']['tmp_name'], $giden)
  6.  
  7. ?>

Ve mutlu son

Bu uygulama geliştirildiği takdirde basit işlemler için güzel bir dosya yöneticisi haline dönüşebilir. Hatta dosya gönderme işlemi php'nin ftp fonksiyonlarıyla yapılırsa tıpkı bir ftp programı gibi kullanılabilen bir betik bile olabilir ;)

Umarım AJAX Göndermeç'ten memnun kalırsınız. Maksadım mantığını anlatmak olduğu için basit bir örnek sundum size. Belki ilerki seviyelerde sadece kullanmanız için güzel örnekler verebiliriz.

Güle güle kullanın :)

AJAX Göndermeç'i test edin.
AJAX Göndermeç'i indirin.


Kaynak ajax-tr.com/ajax-ile-dosya-gondermek/2/
Yorumunuzu Ekleyin

Ajax Nedir?

Geride bıraktığımız 2005-2006 yıllarında hakkında en çok konuşulan web olaylarından birisi ajax oldu. Dünya çapında ün sahibi olmuş sitelerin kendi servislerinde ajax isimli tekniği etkin bir şekilde kullanması sonucu pek çok kişinin dikkati ajax üzerine yoğunlaştı. Fakat kişilerin yaptığı ilk yanlış, ajax tekniğini başlı başına yeni bir programlama dili olarak görmeleriydi. Ajax tekniği, daha önceden zaten var olan javascript ve xml dillerinin, web tarayıcısında hazır bulunan xmlhttprequest nesnesi etrafında birlikte kullanılmasından ibarettir.

33,773 Okunma 1 Yorum 05/05/2007 01:39:51

Ajax Nedir?

Bu yazımda web uygulamalarında gün geçtikçe daha yoğun bir şekilde kullanılan bir teknikten bahsedeceğim.

28,311 Okunma Henüz yorum yapılmamış 04/01/2008 02:23:57

Javascript Ve Ajax İle Zamanuyumsuz İstekler Oluşturma.

Web uygulamalarının çoğu, sunucudan tüm html sayfasını alan bir istek/yanıt modelini kullanır. Sonuçta kullanıcı bir düğmeyi tıklatır, sunucuyu bekler, başka bir düğmeyi tıklatır ve biraz daha bekler. Ajax ve xmlhttprequest nesnesiyle, kullanıcıların sunucu yanıtını beklemelerine hiçbir zaman gerek bırakmayan bir istek/yanıt modeli kullanabilirsiniz. Bu makalede, brett mclaughlin, çapraz tarayıcı yöntemiyle xmlhttprequest örneklerinin nasıl oluşturulacağını, isteklerin oluşturulmasını ve gönderilmesini ve sunucuya yanıt verilmesini gösteriyor.

22,143 Okunma Henüz yorum yapılmamış 03/05/2007 01:44:17

Ajax'a Giriş

Ajax (asynchronous javascript and xml); web tabanlı uygulamalarda, zengin kullanıcı arayüzü ve güçlü arka plan uygulamaları bütünleştiren bir yaklaşım ve geliştirme ortamıdır.

21,079 Okunma Henüz yorum yapılmamış 22/06/2007 01:26:25

Ajax Nedir? Ajaxı Oluşturan Bileşenler Nelerdir?

Ajax, terimolojik olarak asynchronous javascript and xml; yani javascript ve xml'in eş zamanlı olmayan hareketlerle icra ettiği faaliyete verilen ?simdir.

19,896 Okunma Henüz yorum yapılmamış 03/05/2007 01:45:22

30 Saniyede Ajax.

Eburhanın yazmış olduğu ajax'i anlamak ve ibrahim'in ajax'in ne olduğuna değindiği ajax seminer notlarım yazılarından sonra sanırım ajax hakkında genel olarak fikir sahibi olduk. Bu yazımla kodlara ilk adımımızı atacağız ve ajax'in çekirdeği olan xmlhttprequest nesnesinin kullanımını göreceğiz.

19,046 Okunma 2 Yorum 03/05/2007 01:41:38

Ajax Nedir?

"ajax;ne Bir Dil,ne De Bir Kütüphane De?ildir. Ajax Sadece Bir Yöntemdir."

16,183 Okunma Henüz yorum yapılmamış 26/04/2007 17:43:57

Yükleniyor...