2013-02-16 9 views
5

Dosyaları yüklemek için File form alanını (Ext.form.field.File) kullandığım Sencha Ext JS uygulamasına sahibim. İyi çalışıyor, ancak kullanıcıların örneğin Dropbox.com'daki gibi bir kerede birden fazla dosyayı seçebilmelerini istiyorum.Sencha dosya yükleme alanı birden çok dosyayı kabul etmek için nasıl kullanılır

<input type="file" name="files" multiple> 

Sencha'sı Ancak birden fazla dosyalarını desteklemez: Ben GİRİŞ elemanının multiple niteliğini kullanarak bu sorunu çözdü nerede (hangi ı HTML üzerinde doğrudan kontrol vardı) başka, dışı Sencha'sı site var Dosya yükleme alanı, en azından güncel sürümden (4.1). Belki de Sencha tarafından <input> öğesinin yaydığı HTML çıktısını değiştirmek mümkün, ancak nasıl emin değilim. Bunun için bir eklenti vardır

cevap

3

:

Ext.define('fileupload',{ 
    extend: 'Ext.form.field.Text' 
    ,alias: 'widget.fileupload' 
    ,inputType: 'file' 
    ,listeners: { 
     render: function (me, eOpts) { 
      var el = Ext.get(me.id+'-inputEl'); 
      el.set({ 
       size: me.inputSize || 1 
      }); 
      if(me.multiple) { 
       el.set({ 
        multiple: 'multiple' 
       }); 
      } 
     } 
    } 
}); 

Ve formunda kullanmak:

,items: [{ 
     xtype: 'fileupload' 
     ,vtype: 'file' 
     ,multiple: true // multiupload (multiple attr) 
     ,acceptMimes: ['doc', 'xls', 'xlsx', 'pdf', 'zip', 'rar'] // file types 
     ,acceptSize: 2048 
     ,fieldLabel: 'File <span class="gray">(doc, xls, xlsx, pdf, zip, rar; 2 MB max)</span>' 
     ,inputSize: 76 // size attr 
     ,msgTarget: 'under' 
     ,name: 'filesToUpload[]' 
    }] 

Örnek görünüm: githab

+0

Teşekkürler. Bu kod ExtJS sürümüne bağlı gibi görünüyor, 4.0.7 olduğu gibi benim için çalışmıyor. Benim durumumdaki giriş elemanında 'input-inputEl' kimliği yok, yani' ext.get (me.id + '- inputEl') '' null' döndürüyor. \t Bunu 'Ext.get (me.id) .down (' input ') 'ile değiştirdim ve bu yardımcı oldu, ancak daha sonra ExtJS kodunda başka istisnalara yol açıyor. – Cozzamara

+0

@ Cozzamara Evet, her şeyi doğru yaptın. Sadece aynı doğrulayıcıda yapılmalıdır. 4.0.7 için örnek: http://htmlpreview.github.com/?https://github.com/werdender/ext4examples/blob/master/fileupload407.html Doğrulama gerekli değilse, yalnızca vtype kullanmayın. – Vlad

İlgili konular