AJAX İle Dosya Göndermek

AJAX & JavaScript & DOM & Php yakuter

AJAX’in artık bir çok farklı alanda kullanılabileceğini eburhan‘ın AJAX Ne Gibi Durumlarda Kullanılmalı? başlıklı yazısında gördük. Gelin bunlara bir de AJAX ile sitemize dosya göndermeyi ekleyelim. Bunun nasıl yapıldığını kendi yazmış olduğum AJAX Göndermeç isimli betik ile anlatmaya çalışacağım. Konu hakkında biraz daha ipucu vermek gerekirse AJAX ile dosya göndermenin mümkün olup olmadığını göreceğiz.

AJAX ile dosya göndermenin mantığı

Yukarıda AJAX ile dosya göndermenin mümkün olup olmadığını göreceğimizi söylemiştim. Şimdi de cevabını veriyorum; malesef hayır, yani AJAX ile dosya gönderemiyoruz. Sebebini açıklamak gerekirse, bildiğiniz gibi normal form bilgilerini GET ve POST metodlarıyla gönderiyoruz. Form ile dosya göndereceğimiz zaman da POST metodunu kullanırız ve karşı tarafta da gönderilen dosyanın bilgilerini $_FILES[’…’] değişkeni ile alabiliriz.

AJAX ile dosyayı göndermeye çalıştığımızda ise form normal bir şekilde gönderiliyor gibi görünmektedir fakat alıcı dosyada $_FILES[’…’] değişkeni bir sonuç vermez ve hata ile karşılaşırız. Çünkü kullanmış olduğumuz tarayıcılar malesef güvenlik nedeniyle (özel ayarlar yapılmadığı müddetçe) XmlHttpRequest nesnesi üzerinden dosya göndermeye müsade etmiyor :(

Peki bir çözümü var mıdır ve varsa nedir? Kısmen de olsa bir çözüm var diyebiliriz; gizli bir iframe kullanmak. Sitemize göndereceğimiz dosyayı seçtikten sonra formumuzu bu iframe’e göndeririz. Ardından AJAX ile dizin listemizi güncelleriz. Kullanıcı sanki tek bir işlem oluyormuş gibi görür yani dosyanın AJAX ile gönderildiğini düşünür. Oysa ki dosyayı gönderen AJAX değil bildiğimiz HTML formu ve iframe‘dir. İnanıyorum ki AJAX Göndermeç‘i açıkladıktan sonra konuyu daha iyi anlayabilirsiniz.

AJAX Göndermeç betiğimiz iki klasör ve 4 adet dosyadan oluşuyor.

Ajax Göndermeç dosyaları
Ajax Göndermeç dosyaları

Dosyaları tanıtmaya başlamadan önce şunu söylemeliyim ki sanırım artık dosyaların içini olduğu gibi yazmama gerek yok. Zaten makalenin sonunda indirebileceğiniz bağlantılar bulunuyor. Yazımda sadece kodlarda dikkatinizi çekmek istediğim noktaları belirteceğim.

KLASÖRLER

dosyalar: Sitemizde göndermiş olduğumuz dosyaları barındırdığımız klasör. İsteğinize göre değiştirebilirsiniz. Önemli olan klasörün izninin yani CHMOD ayarının 777 yani yazılabilir olması gerektiği.

eyceks: Bu betiği hazırlarken sitemiz yazarı Erhan Burhan’ın eyceks isimli kütüphanesinin son versiyonu olan 1.3′ten faydalandım. eyceks klasöründe eyceks kütüphanesi (eyceks.js) ile yüklenme esnasında gösterilecek olan resim dosyası (loading.gif) bulunuyor.

Sayfalar: 1 2

Toplamda 24179 kez okunmuş.
Şu an 2 kişi okuyor.
En fazla 7 kişi aynı anda okumuş.
Bugün 22 kez okunmuş.

Etiketler:

1 oy2 oy3 oy4 oy5 oy (41 oy, ortalama 4.61) Oylanıyor ... Oylanıyor ...

  1.  

Trackback Yorumları takip et Baskı Önizleme

76 yorum var

  1. # Deniz | 28 Şubat 2007, 00:49 Gravatar

    Merhaba güzel olmuş şimdi test ettim de bir de dosyayı sil dediğinizde şifre soracak bi admin özelliği eklense sanırm daha güzel olur . İyi çalışmalar elinize sağlık.

  2. # eburhan | 28 Şubat 2007, 11:06 Gravatar

    @Deniz
    Biz yazıların karmaşıklaşmaması için oldukça basit ve sade bir şekilde yazmaya çalışıyoruz. Evet o dediğiniz yapılabilir fakat bu yazı, ajax ile dosya göndermenin mantığına yoğunlaşmış bir yazıdır. Bu işin nasıl yapıldığını öğrenen birisi bundan sonra her istediğini yapabilir, her istediği özelliği ekleyebilir, script’i istediği gibi geliştirebilir artık.

  3. # grkn | 28 Şubat 2007, 16:26 Gravatar

    güzel makale yakuter :) teşekkürler bende bunu düşünüyordum aydınlatmış oldun beni :)

  4. # yakuter | 28 Şubat 2007, 18:18 Gravatar

    Beğenmenize sevindim :) Aslında bunu geliştirip tam anlamıyla bir dosya yöneticisi yapmak da aklımdan geçmiyor değil ;)

  5. # eburhan | 28 Şubat 2007, 23:39 Gravatar

    Erhan aynı şey benim de aklımdan geçiyor :)

  6. # kara | 28 Şubat 2007, 23:47 Gravatar

    Afedersiniz ama iframe kullandıktan sonra bir ajax kütüphanesi ya da bu kadar komplike javascript kullanmanın mantığını çözemedim. Madem bir iframe kullanıyorum, iframe içinde gerçekleşen olaylar neticesinde body onload ile parent frame’de istediğim gibi at koşturabilirim.

  7. # o--d | 01 Mart 2007, 08:45 Gravatar

    guzel bir yazı olmuş. Ajax-tr yi ve sizi bilgilerinizi bizimle paylaştığınız için tebrik ve takdir ediyorum.

  8. # yakuter | 01 Mart 2007, 11:56 Gravatar

    @kara elbette ki bunu yapabilirsin. Fakat biz parent frame’i yenilemiyoruz. AJAX’i kullandığımız nokta sadece dizin listeleme bölümü. iframe sadece dosyanın gönderildiği form. Bundan başka bir maksadı yok iframe’in.

    Tabi şu da olabilir. Bizim AJAX ile dizinin yenilemesini sağladığımız yere bir iframe koyarsın ve oranın yenilenmesini sağlayabilirsin. Artık AJAX veya iframe kullanmak kararı sana kalmış.

    Sonuç olarak zaten makalede asıl varmak istediğim nokta, dosya kısmının mecburen iframe veya doğrudan başka bir dosyaya yönlenmek zorunda kaldığı, diğer olayları dilediğiniz teknolojiyle yapabileceğinizdi. Anlaşılmışsa ne mutlu bana :)

  9. # kara | 01 Mart 2007, 23:13 Gravatar

    parent frame’i yenilemeniz gerekmiyor. parent frame’den fonksiyon çağırabilirsiniz. XMLHttpObject yokken kullanıyorduk zaten bu tip atraksiyonları. Benim demek istediğim bu yazdığınız uygulama için ajax kullanmaya gerek yok.

    body onload=”window.parent.guncelle(’yenidosya.zip’);”

    şeklinde ana pencereden fonksiyon çağırabiliyorsunuz. Dolayısıyla ajaxa gerek kalmıyor. Umarım ben de anlatabilmişimdir meramımı.

  10. # AhmetK | 01 Mart 2007, 23:20 Gravatar

    Bu scriptin ASP kodları ile çalışanı da yapılabilir. Yapan varsa inceleyebiliriz. Güzel bir çalışma olmuş. Bilginize sağlık.

  11. # yakuter | 02 Mart 2007, 08:11 Gravatar

    @kara aslında ikimiz de aynı şeyleri söylüyoruz yani dediğin gibi bunu yapabilmek için “AJAX olmasa da olur” fakat benim amacım “Peki AJAX ile nasıl yapılır?” sorusuna cevap vermekti. Makalemde de AJAX ile dosya göndermenin mümkün olmadığını, sadece Göndermeç’teki gibi bir dizin yenileme işlemi yapabileceğimizi açıklamaya çalıştım.

    Sanırım bu sefer düşündüklerimi açıklayabildim :)

    @AhmetK dediğinde haklısın. ASP ile de bu örnekleri sunmalıyız fakat malesef sitenin şuan ki örnek hazırlayan yazarları hep PHP programcıları. Yani ciddi bir ASP bilen yazar ihtiyacımız var. Bu nedenle bir kaç yer ile görüşmekteyiz. İnşallah dilediğimiz gibi biri aramıza katılır…

  12. # Orhan | 03 Mart 2007, 01:23 Gravatar

    Peki bir progress bar için ne yapmamız gerekiyor? XMLHttpObject nesnesinden dosyanın kaç byte’ının transfer edildiği gibi bir bilgi dönüyor mu?

  13. # yakuter | 13 Mart 2007, 08:50 Gravatar

    @Orhan, kusura bakma geç cevap yazıyorum. Nasıl olduysa bu yorum gözümden kaçmış. Aslında progress bar konusunda haklısın. Bilmek gerekli fakat ben de hiç düşünmemiştim nasıl yapılacağını :) Aslında aklımda bir iki teknik var işe yarayabileceğini düşündüğüm. Bir deneyeyim, olursa söylerim kısaca ;)

  14. # mutkan | 15 Mart 2007, 23:47 Gravatar

    evt ya, progress bar olursa tam super olcak

  15. # mutkan | 16 Mart 2007, 00:06 Gravatar

    kurdum ve cok guzel calisiyo, ellerine saglik, fakat bir sorum olacakti. Ben dosyalara sadece root un erismesini istiyorum. Burda dosyalar/bilmem.jpg yazinca dosya download edilebiliyor. Dosyalar kismina erisimi nasil kisitlayabiliriz. Tesekkurler..

  16. # Burak | 17 Mart 2007, 23:57 Gravatar

    @orhan, @yakuter, @mutkan: Progress bar için iframe’de dosya upload edilirken başlangıçta tetiklenen bir periyodik xmlhttp sorgusu ile sunucudan upload edilen miktar bilgisi alınabilir. Php için sunucuda filesize() komutu ile geçici dosyanın boyutu döndürülebilir. Gerisi tamamen hayalgücünüze kalmış :) Boş bir zamanımda örnek bir kod yazıp burada yayınlamayı isterim.

  17. # orhan | 18 Mart 2007, 17:24 Gravatar

    canım benim işte bu :) Bu kadarı bile yeter gerisi için…

    Web de birkaç örneğe rastladım fakat onlarda PHP+PERL ile birşeyler yapmışlar o yüzden pek bişey anlamadım ama bunu bir denemek lazım tabi…

  18. # yakuter | 18 Mart 2007, 22:26 Gravatar

    @burak dediğin oldukça mantıklı ve yapılabilir. Hiç bu açıdan düşünmemiştim :) Teşekkür ederim bizi aydınlattığın için ;)

  19. # frosten | 20 Mart 2007, 17:46 Gravatar

    peki ben bu işi asp.net ile yapmak istiyorsam?

  20. # Vokan Özçelik | 23 Mart 2007, 07:18 Gravatar

    Makale için teşekkürler.

    Güncel olarak üretim ortamında da kullanılan bir teknik bu.

    Örneğin Gmail çaktırmadan e-posta ile beraber eklenti dosyalar gönderirken aynı tekniği kullanıyor.

    Hatta meraklısına bir ara gmail uygulaması çalışırken gelip giden requestleri bir sniff edin diyebilirim (tercihen firebug ile). Orjinal şeylere rastlayabiliyorsunuz ;)

    Sevgiler.

  21. # eburhan | 23 Mart 2007, 09:07 Gravatar

    @Volkan
    Dediğin gibi Gmail dosya eklerken çaktırmadan (onChange olayında) dosyayı yüklüyor. Zaten Firebug ile XMLHttpRequest isteklerini dinlemeyi anlatacağım. O zaman tekrar bahsederiz :)

  22. # byfobi | 18 Nisan 2007, 01:26 Gravatar

    Test etme alanında sorun var sanırım makele için tşkler.

  23. # eburhan | 18 Nisan 2007, 09:15 Gravatar

    Örnekleri “ücretsiz” sunucuda tuttuğumuz için bazen böyle sorunlar oluşabiliyor. Sorunu düzelttim ve şimdi eskisi gibi çalışıyor. Haber verdiğiniz için teşekkürler ;)

  24. # bayram | 25 Nisan 2007, 10:37 Gravatar

    harika güzel olmuş

  25. # herace | 29 Nisan 2007, 00:18 Gravatar

    yakuter hani demişsin ya bunu geliştirmeyi düşünüyorum dört gözle bekleyenlerdenim :D

  26. # Melih | 16 Mayıs 2007, 21:13 Gravatar

    Teşekkürler. Ajax’a yeni başladık.Açıkçası mantığını anlamada çok faydasını gördüm.

  27. # selant | 18 Mayıs 2007, 22:13 Gravatar

    hocam çok sağlam makale olmuş, tebrikler, teşekkürler.

  28. # Emrah | 31 Mayıs 2007, 17:23 Gravatar

    Selamlar
    Çok güzel bir yazı olmuş, teşekkürler.
    Ben bir sorunla karşılaştım ve fikrinizi almak istiyorum.
    Bu sistemi kendi upload fonksiyonumla harmanladım ve çok güzel çalıştı.
    Ancak upload olayını yüksek hacimli dosyalarda kullanırken, fonksiyon upload işlemini bitiremeden dizin.php yenileniyor.
    Bu durumda dosya maalesef yüklenmemiş gözüküyor.
    2 şansım var.Birisi yenile butonunu kullanıp kontrol etmek.
    (bu amatörce geliyor biraz ve kullanmak istemiyorum)
    birde sleep fonksiyonunun süresini uzatmak var ama onuda tahmin etmek imkansız.
    15 sn desem kısa olabilir, 40sn desem o da çok fazla…
    Sizce dizin.php yi otomatik olarak 10sn de bir yeniletmek nasıl olur? Ve bunu nasıl yapmalıyım?
    Yada aklınıza gelen başka bir metod var mı?
    Teşekkürler

  29. # GÖkhan | 01 Haziran 2007, 01:09 Gravatar

    Merhaba. Sleep() fonksiyonunu kullanmak hatalıdır. Dosya boyutunu bilmediğimiz için ve/veya sunucunun o anki durumuna göre dosya yükleme süresi değişeceğinden sleep() pek yararlı olmaz. Bunun yerine dosyaGonder(); fonksiyonu ile yeni bir xmlHttprequest nesnesi çalıştırıp bu nesneyi dizin içeriği alındığında bilgiler değiştiği ana kadar setTimeout ile tekrarlı çalıştırabiliriz. Dizini listelemek için alınan bilgilerde bir değişiklik olduğu anda clearTimeout ile tekrarlamayı durdurabiliriz. Bu aynı anda iki kişinin dosya yüklemesi durumunda da bize yarar sağlar.

  30. # Onur | 14 Haziran 2007, 03:21 Gravatar

    merhaba,
    HATA: Internal Server Error hatası alıyorum. neden bu tür bir hata veriyor?

  31. # Caner | 26 Haziran 2007, 12:22 Gravatar

    Ne kadar büyüklükte dosyalar kabul ediliyor acaba ? Öylesine deneyeyim dedim ama tam kestiremedim.Resimler yükleniyor ama EXE’ler yüklenemiyor, ayrıca 26 MB’Lık bir exe’yi uzantısı jpg olacak şekilde denedim yine yüklenmedi.Bir sınırı var mı ? Kıstaslardan bahsedecek olan arkadaşların yorumlarını bekliyorum.

    Hepinize iyi günler, iyi çalışmalar dileirm…

  32. # eburhan | 28 Haziran 2007, 09:37 Gravatar

    @Caner
    Belli bir dosya boyutunu geçerseniz sistem yüklemenize izin vermiyor. Bu limitin kaç mb olduğunu söyleyemeyiz. Bu arada exe, php gibi dosyalara izin verilmiyor.

  33. # Caner | 28 Haziran 2007, 11:20 Gravatar

    Teşekkür ederim Eburhan.Ancak neden söyleyemediğini merak ediyorum.Acaba bu 110mb’deki hesabın güvenliği için mi yoksa kesin bir değeri olmadığından mı :S ?

    Bu değer benim için önemli.Kodlarda kesin bir ifade göremediğimden merak ediyorum affedin.Hem, exe gibi dosylara izin vermek için ne yapmak gerekir ?

    Hoşçakalın.

  34. # eburhan | 28 Haziran 2007, 12:04 Gravatar

    @Caner
    Bu makalenin sonunda kaynak kodları indirebileceğiniz adres mevcut. Bu adresten indirdiğiniz dosyada herhangi bir kısıtlama yok. Yani exe gibi dosyalara izin vermek için ekstra birşey yapmayacaksın.

    Biz 110mb’a yüklerken ise mecburen bazı kısıtlamalar yapmak zorundaydık. Çünkü sistemi suistimal etmek isteyen zıpçıktılar oldu maalesef. Neden böyle yapıyorlar anlam veremiyorum. Sanki biz orada 10.000 kişinin kredi kartı bilgilerini saklıyoruz :D

  35. # Caner | 28 Haziran 2007, 12:35 Gravatar

    Boşuna mesaj kirliliği yaptığımı sanmayın ama aslında merak ettiğim bir diğer sorunun cevabını alamadım.Biz bu indirdiğimiz kaynak kodlarını localde çalıştırıyoruz diyelim.Makinemde dosya saklayacağım mesela ben.Bu örneklerle ne kadar büyüklükte bir arşiv dosyasını ya da video dosyasını saklayabilirim mesela ? Bunu merak ediyorum aslında.

    Hoşçakalın.

  36. # eburhan | 28 Haziran 2007, 13:21 Gravatar

    Ne kadar büyüklükte dosya uplaod edebileceğini php.ini dosyasındaki upload_max_filesize ayarı belirler. Meselâ bu ayarı 500M olarak belirlersen 500 MB’a kadar kendi bilgisayarında dosya upload edebilirsin.

  37. # Caner | 28 Haziran 2007, 13:24 Gravatar

    Tamaaam, ben de diyorum neden 2 MB’dan büyük dosyalarda sapıtıyor diye. Bendeki 2 MB imiş. Eburhan işte bu cevap bana yeter kardeşim. Çok sağol. Demek ki şu php öğrenme sürecinde, etrafı daha fazla kurcalamam gerekiyor.

    Hoşçakalın. İyi çalışmalar…

  38. # farkob | 20 Temmuz 2007, 18:20 Gravatar

    Dosya boyutu değil önemli olan, sleep(2)’dir. Eğer yorumlarda denildiği gibi setTimeout’la birkaç saniyede bir denenmesi daha mantıklı.

    Çünkü 26 Mb iki saniyede yüklenemez, ve cevap 2sn hatta artı bir kaç milisaniye sonra geleceğinden, yüklenmemiş olduğu için yüklenmiyor. Ayrıca exe’ler için bir snırlama yok görüldüğü gibi PHP scriptinde de. Ama belki php.ini’de ayarı vardır, sadece şu mime typelarını kabul et diye.

    Ayrıca sadece resim upload edilen yerlerde, aklınızda bulunsun, imaj açılıp gd libraryle yazdırılıp tekrar kaydedilir. O yüzden mesela imageshack’e de upload edemezsiniz exeleri.

  39. # yakuter | 20 Temmuz 2007, 18:35 Gravatar

    @farkob yorumuna tamamen katılıyorum. Sadece şu notu düşmek istedim, bu örnek upload işleminin nasıl yapıldığını en basit haliyle anlatmak içindi tıpkı sitedeki diğer örnekler gibi. Güvenliktir, diğer olasılıklardır düşünmedim. Fakat dediğin gibi buna bir exe kontrolü, dosya boyutu kontrolü vs eklenebilir. Teşekkür ederim yorumun için.

  40. # Slyther | 22 Temmuz 2007, 20:06 Gravatar

    Neden hep PHP olarak yapıyorsunuz anlamadım gitti?

  41. # yakuter | 23 Temmuz 2007, 00:23 Gravatar

    #Slyther, aslında cevap basit, PHP bildiğimizden PHP ile yazıyoruz :)

  42. # hasan | 26 Temmuz 2007, 07:30 Gravatar

    super bi anlatim olmus paylasim icin teskurler

  43. # Cumhur KORKUT | 01 Ağustos 2007, 21:43 Gravatar

    @Slyther, PHP daha çok kullanılıyor ve açık kaynaklı. Sen de ASP(.NET) konusunda bize destek verebilirsin. ;)

  44. # doğan | 01 Eylül 2007, 09:27 Gravatar

    herşey iyi güzel ama bu kütüphaneyi nereden indirecem?

  45. # eburhan | 01 Eylül 2007, 15:18 Gravatar

    @doğan
    http://ajax-tr.com/wp-content/ekler/37/indir/ linkinden indirebilirsin.

  46. # hikmet | 10 Eylül 2007, 13:41 Gravatar

    eburhan makalelerini okudum. sorum şu ;ajax kodlarının olduğu html sayfasıyla verileri çektiğimiz asp yada php saysası farklı serverlardaysa , xmlhttp.open(’post’,url,true) yada xmlhttp.open(’get’,url,true) satırında erişim engellendi diye js hatası veriyor.yani url olarak http://www.xxx.com/xxx.asp gibi kullanamazmıyız.

  47. # selçuk | 12 Eylül 2007, 09:20 Gravatar

    Çok güzel bir örnek emeği geçen herkese tşkler.
    Benim takıldığım bir nokta var. Dosyaları silerken mysql den de silmek istiyorum bunun için bazı oynamalar yaptım kodlarda mesala dizin php de sil linkinde ‘[sil]’ user_id ekledimki user_id yi almak için ve dosyasil fonksiyonunuda

    function dosyaSil(silinecekDosya,userid) {
    if( confirm(’Dosya Silinsin mi?’) ) {
    var sc=”yap=sil&dosya=”+silinecekDosya+”&userid=” + userid;
    var sc=”yap=sil&dosya=”+userid;
    JXP(1, “dizin_alani”, “cevap.php”, sc);
    }
    }
    gibi bir değişiklik yaptım ama sil e tıklayınca çalışmıyor. Bu konuda yardımlarınızı bekliyorum.
    Tşkler

  48. # etranger | 13 Eylül 2007, 10:55 Gravatar

    içerikte biraz değişiklik yaptım dosyaları veritabanına yazdırmak için $_File[’dosya’][’name’] boş dönüyor. Bu konuda yardımcı olabilir misiniz ?

  49. # Harmankaya | 21 Ekim 2007, 19:50 Gravatar

    Güzel bir içerik olmuş eburhan arkadaşımızada kütüphanesinden dolayı teşekkürler ;)

  50. # goksel | 19 Kasım 2007, 09:29 Gravatar

    Arkadaşlar göndermeç tadında iframe ve ajax la çalışan güzel bir iş çıkardım. Görmek isterseniz www.caddy-tasarim.com/fileupload
    Kaynak dosyalar www.caddy-tasarim.com/fileupload/fileupload.rar

  51. # Nurullah Okatan | 09 Ocak 2008, 23:14 Gravatar

    Yakuter gerçekten başarılı bir çalışma olmuş, tebrik ediyorum seni. Şimdi yapacagım bir site için böyle orjinal birşeye ihtiyacım vardı, biraz daha güçlendirip sistemde kullanabilirim. Emeğine, beynine, parmaklarına sağlık. :)

  52. # onuR | 22 Ocak 2008, 18:14 Gravatar

    merhaba, ajax-gondermec’i sitemizde kullanmamıza izin var mı?
    teşekkürler.

  53. # Mustafa DEMIR | 29 Ocak 2008, 16:34 Gravatar

    sLm iLLa beni php öğrenmeye teşvik ediceksiniz :) arkadaşlar neyse şimdiye kadar indirdiğim kodları asp ye çevirdik sonuçta php mantığıda aynı.. ama php de öğrenicem :) olmuyor böle
    Makale çok güsel çalışmada öyle tebrikler..

  54. # kerem | 12 Mart 2008, 10:40 Gravatar

    tebrik ederim çok güzel bir çalışma olmuş.

  55. # Matasoy | 22 Mart 2008, 14:06 Gravatar

    Eline sağlık. Bir de bunun mysql le bağlantılı yapabildikmi tamamdır. yukarda birisi biraz uraşmış. ama bende şimdi uğraşacam. kullanıcı girişine adapte etmem lazım. Öğrencilerimden dosyaları bu aracılığı ile almayı düşünüyorum. Ama bazen dosyalar biraz büyük oluyor. 5mb 10mb 17mb gibi. Buyüzden rapidshare deki gibi bi bara ihtiyacım da olacak. Progress bar yani.

    Eğer bud ediklerimi yapabilen birisi varsa cevap verirse de çok mutlu olurum.

    Kolay gelsin iyi çalışmalar.

  56. # emre | 22 Mayıs 2008, 17:11 Gravatar

    ajax ile dosya göndermek(upload) mumkun yabancı sitelerde orneklerı var

  57. # Alper | 30 Mayıs 2008, 22:09 Gravatar

    Bir dosya yükledik diyelim.İkincisini yüklersek onu yüklemiyor.Tekrar yüklemek için sayfayı refresh etmek gereiyor.Yani sayfayı komple yenilmeden ard arda yükleme yapamıyoruz.Sizce neden kaynaklanıyor?

  58. # Burak | 03 Haziran 2008, 01:27 Gravatar

    @Alper sanırım firefox’da bu sorunla karşılaştın. Firefox’da iframe’i domdan çıkarsan bile aynı id ile ikinci bir iframe oluşturulamıyor. (Sebebini bilmiyorum :( )
    Bu sebeple her upload sırasında oluşturduğun iframe için random bir id üretmelisin.

    @emre; malesef ajax kullanarak sunucuya dosya göndermek mümkün değil, gizli iframe tekniğinden başka yol yok. (Tabi tarayıcılar için böyle eklentiler var ama eklentiyi kurmamış kullanıcılar bu özelliği kullanamıyorlar)

  59. # Ercan | 03 Haziran 2008, 11:14 Gravatar

    merhaba öncelikle bu script için teşekkürler. dosya tiplerini ve boyutunu nereden değiştirebiliriz. Not:ücretli hostta kullanıcam

  60. # Alper | 04 Haziran 2008, 11:21 Gravatar

    Yanıtladığız için teşekkür ederim.Firefox da bu sorunla karşılaştım.Javascript bilgim yok.Nasıl bir random değer verebileceğimi kısaca açıklayabilir misiniz?

    Teşekkürler

  61. # Mustafa EFE | 02 Temmuz 2008, 00:43 Gravatar

    walla herkes bir şeyler demiş :) gayet güzel ve basit bi şekilde anlatmışınız. çok güzel ve 10 numara olmuş. teşekkürlerimi iletmek için bu iletiyi yazıyorum saygılarımla başarılarınızın devamını dilerim.

  62. # Burak | 03 Temmuz 2008, 14:33 Gravatar

    @Alper; kusura bakma biraz geç oldu :(

    http://www.webtoolkit.info/ajax-file-upload.html

    Bu adreste çok güzel bir class var. Upload sırasında iframe oluşturup bitince dom’dan çıkarıyor.
    Sadece submit ve loaded kısımlarını ihtiyacına göre düzenleyip kullanabilirsin.

  63. # Kamil | 18 Temmuz 2008, 19:29 Gravatar

    Progress bar için sunucudaki tmp dosyasının büyüklüğü alınarak birşeyler yapılabilir denmiş ancak dosya gitmeden dosyanın tmp adı gelmiyor. Yani dosya tamamen sunucuya gidene kadar $_FILES değişkeni boş kalıyor. Başka bi yol yok mu?

  64. # Kamil | 27 Temmuz 2008, 15:04 Gravatar

    Sanırım bu progress bar işi yalnızca php, html ve javascript kullanarak yapılamaz.
    Peki şöyle bişey sorabilir miyim?
    Bir form aracılığıyla başka bir sayfaya(örneğin bi php sayfasına) dosya gönderdiğimizde sayfa tamamen yüklenene yani dosya sunucuya gidene kadar sayfa açılmıyor. Dosyanın sunucuya gönderildiği süreçte sadece bir yükleniyor yazısı göstermek için ne yapmalı? Javascript ile dosyanın gönderildiği sayfada sayfa tamamen yüklenene kadar bir yükleniyor yazısı nasıl yazılabilir? Bazı sitelerde görüyorum mesela bir sayfa tamamen açılana kadar lüten bekleyiniz gibi bi yazı çıkıyor.
    Eğer böyle bişey olursa dosyanın ne kadarının yüklendiğini göstermeyiz ama en azından dosya tamamen gidene kadar ziyaretçiye bi uyarı verebiliriz.

  65. # Özkan | 30 Temmuz 2008, 11:01 Gravatar

    Gerçekten çok hoç bir script olmuş ellerinize sağlık

  66. # Volkan Özçelik | 01 Ağustos 2008, 12:30 Gravatar

    @Kamil

    > Sanırım bu progress bar işi yalnızca php, html ve javascript kullanarak yapılamaz.

    Yoo yapılır, niye yapılmasın ki?

    >Dosyanın sunucuya gönderildiği süreçte sadece bir yükleniyor yazısı göstermek için ne
    >yapmalı? Javascript ile dosyanın gönderildiği sayfada sayfa tamamen yüklenene kadar bir >yükleniyor yazısı nasıl yazılabilir?

    IFRAME kullanarak dosya yüklemek ve XmlHttpRequest kullanarak dosyanın yüklenip yüklenmediğini setInterval ile atadığımız bir fonksiyonla düzenli aralıklarla (yarım saniye örneğin) pinglemek.

    Hatta bu yöntemle dosyanın ne kadarının yüklendiğini de gösterebiliriz.

    Yardımcı olması dileğimle.

  67. # Kamil | 02 Ağustos 2008, 00:07 Gravatar

    valla ben yapamadım tmp dosyası tamamen yüklenene kadar dosyanın adını alamıyorum, dolayısıyla boyut bilgisinide…
    Formla gönderilen bir dosyayla ilgili bilgileri java script ile alabiliyor muyuz? Yukarıda da dediğim gibi php de $_FILES değişkeni dosya sunucuya tamamen yüklenene kadar boş kalıyor.

  68. # Volkan Özçelik | 07 Eylül 2008, 10:49 Gravatar

    @Kamil

    @_FILES değişkeni ile yapılabileceğini sanmıyorum.
    Bir pipe açıp (fileoutputstream) bu pipe’ın kaydettiği temp dosyanın boyutlarını belirli aralıklarla sorgulamak gerekli.

    Bunu Java(JSP) ve C# ile yaptım. PHP ile hiç denemedim bununla birlikte

    http://blog.joshuaeichorn.com/archives/2006/03/14/php-ajax-file-upload-progress-meter-updates/

    şeklinde bir çalışma var. Gayet yapılabilir görünüyor yani.

    Yardımcı olabilir.

  69. # Sedat Kumcu | 16 Eylül 2008, 14:05 Gravatar

    Çok teşekkürler çok faydalı bir makale oldu.

  70. # Muharrem Yağlı | 18 Kasım 2008, 12:33 Gravatar

    Merhaba kardeş admin özelliğini sen ekleye bilirsin eger php bilgin varsa yoksa yardımcı olurum . mail atarsan sana yollarım . muharremyagli27@gmail.com

  71. # muhammed | 23 Kasım 2008, 15:06 Gravatar

    donload linkleri krık lutfen acillll……

  72. # Muharrem Yağlı | 24 Kasım 2008, 20:42 Gravatar

    Merhaba Link Kırık isterseniz buradan indirebilirsiniz.
    http://sysmedya.com/ajax-gondermec.zip

  73. # Hasan | 25 Kasım 2008, 12:36 Gravatar

    Merhaba,

    Şuan linkler çalışmamakda. GÜncellerseniz sevinirim.

    İyi çalışmalar…

  74. # Mehmet | 12 Şubat 2009, 13:28 Gravatar

    Merhabalar,
    Muharrem bey’in daha sonradan vermiş olduğu linkte çalışmamaktadır.Güncellerseniz sevinirim..

  75. # gokhan | 12 Mart 2009, 02:53 Gravatar

    Linkler Kırık yardımcı olabilirmisiniz acaba?

  76. # Mustafa | 28 Haziran 2009, 03:19 Gravatar

    Birisi linkleri yenileyebilir mi?

Yorum yazın

sayfa sayacı