2013-07-24 3 views
1

Я ищу пример here и используя javascript, предоставленный из этого примера here. В основном, что я хочу, это отдельный редактор файлов, где я могу выбрать столько файлов, сколько захочу. В примере, который я пробовал, есть автономная кнопка загрузки, но они не позволяют мне переместить выделение нескольких файлов одновременно.Выберите несколько файлов из FileUploadField в extjs

Этот код создает кнопку, но я не могу загрузить в нескольких файлов одновременно:

var addFilesButton = new Ext.ux.form.FileUploadField({ 
    buttonText: 'Add Files...', 
    buttonOnly: true, 
    listeners: { 
     'fileselected': function(fb, v){ 
      var Record = myGrid.getStore().recordType; 
      var newFile = new Record({ 
      fileName:  v, 
      type:   'src', 
      version:  '5.9', 
      }); 

      myGrid.stopEditing(); 
      myGrid.getStore().add(newFile); 
      myGrid.startEditing(0, 0); 
     } 
    } 
}); 

ответ

3

Ext.ux.form.FileUpload использует HTML INPUT поля, чтобы установить файл для загрузки, который является довольно нормальной вещью делать.

Если вы используете HTML4, для ввода поля файла может быть назначено не более одного файла.

Однако из HTML5 есть a special attribute, который вы можете установить для приема нескольких файлов.

У меня modified the script соответственно создано: a demo.

Обратите внимание, что спецификация HTML5 все еще находится в черновике. Feature compatibility table доступен на caniuse.com

+0

Спасибо за очень в глубине ответа. к сожалению, я не использую html 5, но я попробовал пример здесь: http://www.rahulsingla.com/blog/2012/03/extjs-3-enabling-multiple-file-uploads-using-textfield и я ' m способен выполнять несколько загрузок с помощью своего кода. Проблема с его кодом заключается в том, что в нем есть текстовое поле, и по какой-то причине я не могу удалить текстовое поле. Есть еще идеи? Благодаря! – Grammin

+0

@ Grammin в примере, который вы указали, также используется атрибут 'multiple'. –

+0

Я повторил все, и на этот раз получил его на работу ... Спасибо вам большое за помощь. Мне жаль, что я не мог дать вам больше одного взлёта. – Grammin

1

класса Мои MultiFileUploadField:

MultiFileUploadField = Ext.extend(Ext.ux.form.FileUploadField, { 
    multiple: false, 

    createFileInput: function() { 
    this.fileInput = this.wrap.createChild({ 
     id: this.getFileInputId(), 
     name: this.name||this.getId(), 
     cls: 'x-form-file', 
     tag: 'input', 
     type: 'file', 
     size: 1 
    }); 

    if(this.multiple){ 
     this.fileInput.dom.setAttribute('multiple', 'multiple'); 
    } 
    }, 

bindListeners: function(){ 
    this.fileInput.on({ 
    scope: this, 
    mouseenter: function(){ 
     this.button.addClass(['x-btn-over','x-btn-focus']) 
    }, 
    mouseleave: function(){ 
     this.button.removeClass(['x-btn-over','x-btn-focus','x-btn-click']) 
    }, 
    mousedown: function(){ 
     this.button.addClass('x-btn-click') 
    }, 
    mouseup: function(){ 
     this.button.removeClass(['x-btn-over','x-btn-focus','x-btn-click']) 
    }, 
    change: function(){ 
     var v = this.fileInput.dom.files; 
     this.setValue(v); 
     this.fireEvent('fileselected', this, v); 
    } 
    }); 
    }, 
}); 
Смежные вопросы