Ext.require([ 'Ext.form.field.File', 'Ext.form.field.Number', 'Ext.form.Panel', 'Ext.window.MessageBox' ]); Ext.onReady(function() { // Class which shows invisible file input field. if (window.location.href.indexOf('debug') !== -1) { Ext.getBody().addCls('x-debug'); } var msg = function(title, msg) { Ext.Msg.show({ title: title, msg: msg, minWidth: 200, modal: true, icon: Ext.Msg.INFO, buttons: Ext.Msg.OK }); }; var fibasic = Ext.create('Ext.form.field.File', { renderTo: 'fi-basic', width: 400, hideLabel: true }); Ext.create('Ext.button.Button', { text: 'Get File Path', renderTo: 'fi-basic-btn', handler: function(){ var v = fibasic.getValue(); msg('Selected File', v && v !== '' ? v : 'None'); } }); Ext.create('Ext.form.field.File', { renderTo: 'fi-button', buttonOnly: true, hideLabel: true, listeners: { 'change': function(fb, v){ var el = Ext.get('fi-button-msg'); el.update('Selected: '+v); if(!el.isVisible()){ el.slideIn('t', { duration: 200, easing: 'easeIn', listeners: { afteranimate: function() { el.highlight(); el.setWidth(null); } } }); }else{ el.highlight(); } } } }); var tpl = new Ext.XTemplate( 'File processed on the server.
', 'Name: {fileName}
', 'Size: {fileSize:fileSize}' ); Ext.create('Ext.form.Panel', { renderTo: 'fi-form', width: 500, frame: true, title: 'File Upload Form', bodyPadding: '10 10 0', defaults: { anchor: '100%', allowBlank: false, msgTarget: 'side', labelWidth: 50 }, items: [{ xtype: 'textfield', fieldLabel: 'Name' },{ xtype: 'filefield', id: 'form-file', emptyText: 'Select an image', fieldLabel: 'Photo', name: 'photo-path', buttonText: '', buttonConfig: { iconCls: 'upload-icon' } }], buttons: [{ text: 'Save', handler: function(){ var form = this.up('form').getForm(); if(form.isValid()){ form.submit({ url: 'file-upload.php', waitMsg: 'Uploading your photo...', success: function(fp, o) { msg('Success', tpl.apply(o.result)); } }); } } },{ text: 'Reset', handler: function() { this.up('form').getForm().reset(); } }] }); Ext.create('Ext.form.Panel', { renderTo: 'fi-form-failure', width: 500, frame: true, title: 'Upload error test', bodyPadding: '10 10 0', defaults: { anchor: '100%', allowBlank: false, msgTarget: 'side', labelWidth: 70 }, items: [{ xtype: 'textfield', fieldLabel: 'Name' },{ xtype: 'filefield', id: 'form-file-fail', emptyText: 'Select an image', fieldLabel: 'Photo', name: 'photo-path', buttonText: '', buttonConfig: { iconCls: 'upload-icon' } }, { xtype: 'numberfield', fieldLabel: 'HTTP status', value: 200, minValue: 200, maxValue: 599, allowBlank: false, name: 'returnResponse' }], buttons: [{ text: 'Save', handler: function(){ var form = this.up('form').getForm(); if(form.isValid()){ form.submit({ url: 'file-upload.php', waitMsg: 'Uploading your photo...', success: function(fp, o) { msg('Success', 'Processed file "' + o.result.file + '" on the server'); }, failure: function() { Ext.Msg.alert("Error", Ext.JSON.decode(this.response.responseText).message); } }); } } },{ text: 'Reset', handler: function() { this.up('form').getForm().reset(); } }] }); });