2013-02-16 4 views
5

Ich habe Sencha Ext JS-Anwendung, wo ich File Formularfeld (Ext.form.field.File) zum Hochladen von Dateien verwenden. Es funktioniert gut, aber ich möchte, dass Benutzer mehrere Dateien gleichzeitig zum Hochladen auswählen können, beispielsweise auf Dropbox.com. Ich habe eine andere, nicht-Sencha-Website (in dem ich die direkte Kontrolle über HTML hatte), wo ich dieses Problem gelöst, indem multiple Attribut des INPUT-Element mit:Wie Sencha Datei-Upload-Feld zu akzeptieren, mehrere Dateien

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

Sencha jedoch nicht mehrere Dateien unterstützt in Datei-Upload-Feld nativ, mindestens ab der aktuellen Version (4.1). Vielleicht ist es möglich, die HTML-Ausgabe von Sencha für <input> Element zu ändern, aber ich bin mir nicht sicher, wie.

Antwort

3

Sie eine xtype erstellen:

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

und verwenden Sie es in Ihrem Formular:

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

Siehe Beispiel auf githab

+0

Danke. Dieser Code scheint von der ExtJS-Version abhängig zu sein funktioniert bei mir mit 4.0.7 nicht. Das Eingabeelement hat in meinem Fall keine ID 'something-inputEl', daher gibt 'Ext.get (me.id +' - inputEl ')' 'null' zurück. \t Ich ersetzte es mit 'Ext.get (me.id) .down ('input')' und das half, aber es verursacht dann weitere Ausnahmen in ExtJS-Code die Straße hinunter. – Cozzamara

+0

@Cozzamara Ja, du hast alles richtig gemacht. Genauso muss im Validator getan werden. Beispiel für 4.0.7: http://htmlpreview.github.com/?https://github.com/werdener/ext4examples/blob/master/fileupload407.html Wenn eine Validierung nicht notwendig ist, verwenden Sie einfach nicht vtype. – Vlad