ExtJS 4.2 filefield 多重上传

ExtJS 4.2 filefield multiple upload

我在上传多文件时遇到了一些问题

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

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();

在控制器中一切正常,如果我 select 1,2,3,etc... 上传的文件用它的名字填充网格。

当我提交表单并执行 PHP 来处理 selected 文件时,问题就来了,在 php 中,如果我打印 $_FILES 变量,我只会得到最后 selected.

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

------WebKitFormBoundaryJhIv2MXqKkzPnNys Content-Disposition:表单数据;名字="filefield-1459-inputEl";文件名="file1.doc" 内容类型:application/msword

------WebKitFormBoundaryJhIv2MXqKkzPnNys Content-Disposition:表单数据;名字="filefield-1459-inputEl";文件名="file2.docx" 内容类型:application/vnd.openxmlformats-officedocument.wordprocessingml.document

------WebKitFormBoundaryJhIv2MXqKkzPnNys Content-Disposition:表单数据;名字="filefield-1459-inputEl";文件名="file3.docx" 内容类型:application/vnd.openxmlformats-officedocument.wordprocessingml.document

我是不是遗漏了什么?如何在提交 php 文件后检索所有文件?

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

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

然后您可以在 PHP 上使用;

$_FILES["uploads"];