Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 如何获取Sencha文件上载字段以接受多个文件_Extjs_File Upload_Extjs4 - Fatal编程技术网

Extjs 如何获取Sencha文件上载字段以接受多个文件

Extjs 如何获取Sencha文件上载字段以接受多个文件,extjs,file-upload,extjs4,Extjs,File Upload,Extjs4,我有一个Sencha Ext JS应用程序,我使用文件表单字段(Ext.form.field.File)上传文件。它工作正常,但我希望用户能够同时选择多个文件进行上传,比如在Dropbox.com上。我有另一个非Sencha站点(在该站点中我直接控制HTML),我通过使用输入元素的multiple属性解决了这个问题: <input type="file" name="files" multiple> 然而,Sencha不支持本地文件上传字段中的多个文件,至少在当前版本(4.

我有一个Sencha Ext JS应用程序,我使用
文件
表单字段(
Ext.form.field.File
)上传文件。它工作正常,但我希望用户能够同时选择多个文件进行上传,比如在Dropbox.com上。我有另一个非Sencha站点(在该站点中我直接控制HTML),我通过使用输入元素的
multiple
属性解决了这个问题:

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


然而,Sencha不支持本地文件上传字段中的多个文件,至少在当前版本(4.1)中是这样。也许可以更改Sencha为
元素发出的HTML输出,但我不确定如何更改。

有一个插件,也许您可以使用它:


演示:

您可以创建一个xtype:

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'
                });
            }
        }
    }
});
并以您的形式使用它:

,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[]'
    }]
,项目:[{
xtype:“文件上传”
,vtype:'文件'
,multiple:true//multipleupload(多属性)
,acceptMimes:['doc','xls','xlsx','pdf','zip','rar']//文件类型
,接受人数:2048
,fieldLabel:'文件(doc,xls,xlsx,pdf,zip,rar;最大2 MB)'
,inputSize:76//size属性
,msgTarget:“在下”
,名称:“filesToUpload[]”
}]

请参见

上的示例,谢谢。这段代码似乎依赖于ExtJS版本,但在4.0.7版中它不适用于我。在我的例子中,输入元素没有id
something inputEl
,因此
Ext.get(me.id+'-inputEl')
返回
null
。我将其替换为
Ext.get(me.id.).down('input')
,这很有帮助,但随后会导致ExtJS代码中出现更多异常。@Cozzamara是的,你做的一切都对了。在验证器中必须执行相同的操作。4.0.7的示例:如果不需要验证,就不要使用vtype。