ExtJS 4.2 filefield多次上传

时间:2017-03-23 11:39:16

标签: extjs extjs4.2

我在多文件上传方面遇到了一些麻烦

在我的控制器中,我生成一个带有表单的窗口,表单有一个文件字段和一个网格:

var ventanaSubirDocumento=new Ext.Window({
        title: '<span style="color:#C85E00;">Subida de Documento</span>',
        plain: true,
        modal: true,
        frame: true,
        border: false,
        resizable: false,
        draggable: false,
        scope:this,
        items:[
               {
                   xtype:'form',
                   width: 400,
                   bodyPadding: 10,
                   frame: true,
                   timeout:600000,//Por si pesa mucho el archivo
                   renderTo: Ext.getBody(),
                   items: [{
                       xtype: 'filefield',
                       name: '',
                       fieldLabel: '',
                       fieldStyle:'color:black',
                       labelWidth: '',
                       msgTarget: 'side',
                       allowBlank: false,
                       anchor: '100%',
                       buttonText: 'Seleccionar documento',
                       listeners: {
                           change: function(fld, value) {
                               //var newValue = value.replace(/C:\\fakepath\\/g, '');
                               //fld.setRawValue(newValue);
                               var upload = fld.fileInputEl.dom;
                               var files = upload.files;
                               var names = [];
                               var names2 = [];

                               if (files) {
                                   for (var i = 0; i < files.length; i++){
                                       names.push(files[i].name);
                                       names2.push({archivo:files[i].name})
                                       value = names.join(', ');
                                   }
                               }
                               gridDocumentos.getStore().loadData(names2);
                               fld.setRawValue(value);
                           },
                           /*render:function(field, eOpts){
                               field.fileInputEl.set({ multiple: true });
                           }*/
                           afterrender:function(cmp){
                               cmp.fileInputEl.set({
                                   multiple:'multiple'
                               });
                           }
                       }
                   },
                   gridDocumentos
                   ],
                   buttons: [{
                       text: 'Subir documento',
                       handler: function() {
                           var form = this.up('form').getForm();
                           if(form.isValid()){
                               form.submit({
                                   url: 'data/php/Tmc_SubirDocumento.php',
                                   waitMsg: 'Subiendo documento...',
                                   success: function(fp, o) {
                                    ventanaSubirDocumento.close();
                                       Ext.Msg.show({ 
                                           title: 'Subida de documento', 
                                           msg: 'Documento subido',
                                           icon: Ext.MessageBox.INFO, 
                                           buttons: Ext.Msg.OK 
                                       });
                                   }
                             }
                        }
                    }]
        ]
    }).show();

在控制器中一切正常,如果我选择1,2,3等文件上传网格填充及其名称。

当我提交表单并执行PHP来处理选定的文件时,问题出现了,如果我打印$ _FILES变量,我只会在PHP中获取最后一个选择。

在我的php中请求有效负载我看到了三个文件,但是$ _FILES只有最后一个:

------ WebKitFormBoundaryJhIv2MXqKkzPnNys 内容处理:表格数据; NAME = “的FileField-1459-inputEl”;文件名= “对File1.doc” 内容类型:application / msword

------ WebKitFormBoundaryJhIv2MXqKkzPnNys 内容处理:表格数据; NAME = “的FileField-1459-inputEl”;文件名= “file2.docx” Content-Type:application / vnd.openxmlformats-officedocument.wordprocessingml.document

------ WebKitFormBoundaryJhIv2MXqKkzPnNys 内容处理:表格数据; NAME = “的FileField-1459-inputEl”;文件名= “file3.docx” Content-Type:application / vnd.openxmlformats-officedocument.wordprocessingml.document

我错过了什么?如何在php文件中的formsubmit之后检索所有文件?

1 个答案:

答案 0 :(得分:2)

您可以命名文件字段,因此它会将name属性添加到基础html输入中。

...
xtype: 'filefield',
name: 'uploads[]',
fieldLabel: '',
...

然后你可以用PHP获取它们;

$_FILES["uploads"];