2013-02-16 10 views
5

Ho l'applicazione Sencha Ext JS dove utilizzo il campo modulo File (Ext.form.field.File) per caricare i file. Funziona bene, ma voglio che gli utenti siano in grado di selezionare più file da caricare contemporaneamente, come su Dropbox.com, ad esempio. Ho un altro, non Sencha sito (in cui ho avuto il controllo diretto su HTML) dove ho risolto questo problema utilizzando multiple attributo dell'elemento INPUT:Come ottenere il campo di caricamento del file Sencha per accettare più file

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

Sencha, tuttavia, non supporta più file in campo di caricamento file in modo nativo, almeno a partire dalla versione attuale (4.1). Forse è possibile modificare l'output HTML emesso da Sencha per l'elemento <input>, ma non sono sicuro di come.

risposta

3

È possibile creare un xtype:

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' 
       }); 
      } 
     } 
    } 
}); 

e utilizzarlo nel modulo:

,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[]' 
    }] 

Vedere l'esempio su githab

+0

Grazie. Questo codice sembra dipendere dalla versione di ExtJS che non funziona per me con 4.0.7 così com'è. L'elemento input nel mio caso non ha id 'something-inputEl', quindi' Ext.get (me.id + '- inputEl') 'restituisce' null'. \t L'ho sostituito con 'Ext.get (me.id) .down ('input')' e questo mi ha aiutato, ma poi causa ulteriori eccezioni nel codice ExtJS lungo la strada. – Cozzamara

+0

@ Cozzamara Sì, hai fatto tutto bene. Lo stesso deve essere fatto nel validatore. Esempio per 4.0.7: http://htmlpreview.github.com/?https://github.com/werdender/ext4examples/blob/master/fileupload407.html Se la convalida non è necessaria, non utilizzare semplicemente vtype. – Vlad

Problemi correlati