Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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
Javascript 第二个文件上传在ExtJS 6中失败,在ExtJS 4中工作_Javascript_Extjs_File Upload - Fatal编程技术网

Javascript 第二个文件上传在ExtJS 6中失败,在ExtJS 4中工作

Javascript 第二个文件上传在ExtJS 6中失败,在ExtJS 4中工作,javascript,extjs,file-upload,Javascript,Extjs,File Upload,非常低级的文件上载: dockedItems: [{ xtype: 'toolbar', dock: 'top', items: [{ xtype: 'form', items: [{ xtype: 'filefield', fieldLabel: 'Select file', listeners: { change: {

非常低级的文件上载:

dockedItems: [{
    xtype: 'toolbar',
    dock: 'top',
    items: [{
        xtype: 'form',
        items: [{
            xtype: 'filefield',
            fieldLabel: 'Select file',
            listeners: {
                change: {
                    fn: me.onFilefieldChange,
                    scope: me
                }
            }
        }]
    },{

...

onFilefieldChange: function(filefield, value, eOpts) {
    var form = filefield.up('form').getForm();
    form.submit({
        url: APIURI+'FileUpload',
        headers: {'Accept':'application/json','Content-Type':'application/json'},
        waitMsg: 'Uploading',
        success: function(fp, o) {
            var filedata = Ext.decode(o.response.responseText).data;
            var rec = Ext.create("MyApp.model.FileModel",filedata);
            Ext.getStore("FileStore").add(rec);
        },
        failure: function(fp, o) {
            Ext.alert("ERROR", "File save failed"));
        }
    });
data-ref=​"fileInputEl"
name=​"filefield-1333-button"
data-componentid=​"filefield-1333-button"
第一次上传文件就像一个魔咒;文件打包到multipart/mime中并正确提交

来自同一文件上载字段的第二个文件上载失败,因为该文件未打包到mime中

如果我关闭窗口并再次打开它,文件字段将再次工作-对于单个上载,即


文件输入字段的DOM中的差异告诉我们为什么浏览器的行为是这样的。以下三个属性神奇地从
中丢失,这是Sencha ExtJS 6框架中的一个bug。如果您为文件上载字段提供了
名称
属性,则一切正常

xtype: 'filefield',
fieldLabel: 'Select file',
name: 'RequiredSenchaBugWorkaround',
...

添加名称并不总是有效的。它在Ext 6.2中仍然存在问题。除此之外,你还应该这样做

FileInputField1.reset();

这将确保该字段被重置,并允许您再次上传相同的文件。

您找到答案了吗?@alex_kalenyuk将我的发现添加为答案。如果问题和答案对你有帮助,别忘了投票。