2013-05-02 16 views
6

Bazı giriş alanları ve bir dosya giriş alanı ile normal formum var. Bir dosya yüklemek için Blueimp'in Jquery Dosya Yükleme eklentisini kullanıyorum. Bir dosya seçerseniz ve bundan sonra yükleme düğmesine tıkladığınızda işe yaramış gibi görünüyor. Ancak, karşıya yüklenecek dosyaları yeniden seçerseniz, önceki tüm seçimleri kaydeder ve yükleme tamamlandıktan sonra tüm XHR'leri sunucuya gönderir.Niçin Blueimp'in JQuery Dosya Yükleme işlemi tüm prev. seçenekler [replaceFileInput: false] ve [maxNumberOfFiles: 1] seçenekleri init ayarlanmış olsa bile seçili dosyalar?

Sadece seçili olan bir dosyayı () önceden seçilmiş dosyaları (dosya açık iletişim kutusunda) yüklemek istemiyorum. İşte

yükleme işlemek için benim js modüldür: (How to upload a file only once with blueimp file upload plugin?) burada bulduğu

$(function() { 
    $('#upload_form').fileupload({ 

     dataType: 'json', 
     autoUpload: false, 
     fileInput: '#filechose_button', 
     replaceFileInput: false, 
     maxNumberOfFiles: 1, 
     multipart: true, 

     add: function (e, data) { 

      $('#upload_button').click(function() { 

       $('#upload_button').attr('disabled', true); 
       ... 
       data.submit(); 
       ... 
      }); 
     }, 

     done: function (e, data) { 
      ... // successfully uploaded 
     }, 

     progressall: function (e, data) { 
      ... // update a progress bar 
     } 
    }); 
}); 

çözümleri sadece tıklama unbinding çünkü (ben kirli bakınız) değil en iyi yolu gibi görünüyor olay hala daha önce seçilen tüm dosyaları (bellek sızıntıları) toplama sorunu çözmez.

maxNumberOfFiles: 1 seçeneği benim için çalışmıyor.

+0

hayır "bellek sızıntıları" vardır. 2 dosya eklemeyi deneyin ve bunları yüklemeden önce dosya sisteminden birini silin. Dosya yüklenmeyecek - tarayıcı dosyaları dosyalara değil, dosyalara kaydeder. –

cevap

6

Aynı sorun vardı, çözümüm düğmemdeki tıklama etkinliğini kaldırmak ve ekleme olayı her çağrıldığında onu geri bağlamaktı. Bunu dene.

...

add: function (e, data) { 

     $('#upload_button').unbind('click'); 
     data.context = $('#upload_button').bind('click', function() { 
        ... 
        data.submit(); 
     } 
} 
+0

evet, ama bahsettiğim çözüm ile aynı. Neden maxNumberOfFiles seçeneği işe yaramazsa garip. Ama tamam, çalışır ve aslında ben maxNumberOfFiles seçeneği semantiği uygulayabilirim: Eğer (daha sonra maxNumberOfFiles eklenen dosyalar ile bağlama sayısı) ilk bağlayıcı (sınırları ile bir FIFO Kuyruk türü). Neyse ki, çözüm birçok kişi için içgüdüseldir :) – static

+0

Eğer eklentiye onu açarsanız, daha fazla kullanamayacaksınız? –

+0

Allan, eklenti bu düğmeye bağlı değildir, bu, ekleme işlevinde rastgele belirtilmiştir. – nickbw