【问题标题】:Extjs not able to upload file second time when it was already uploadedExtjs 无法在已经上传文件的情况下第二次上传文件
【发布时间】:2014-07-10 08:00:20
【问题描述】:

我有一个奇怪的 extjs 文件上传行为。

文件上传定义为:

 items: [{
                    xtype: 'filefield',
                    itemId: 'uploadandsign',
                    buttonText: NG.getLabel('browse'),
                    buttonOnly: true,
                    hideLabel: true,
                    width: 100
                }]

如果文件上传成功,我会在屏幕上显示成功标签并删除“X”按钮:

onOpenFileBrowserChange: function (filefield, newValue, oldValue, eOpts) {
            var me = this,             
            form = filefield.up('form').getForm(),
            infoBox = invoiceorigin.down('#fileuploadinfoplaceholder'),
            fileDescription,
            secondfilefield,
            customerFileName = newValue.replace(/^.*[\\\/]/, ''),
            draft = me.getDraft(),
            isSigned = true,
            files = draft.files();

        if (filefield.itemId === 'uploadandsign') {
            isSigned = false;
            secondfilefield = invoiceorigin.down('#uploadnosign');
            fileDescription = 'File system, Unsigned';
        }           
        secondfilefield.disable();

        if (form.isValid()) {
            form.submit({
                url: NG.getLatestApiPath('WebInvoice', 'UploadInvoiceFile'),
                waitMsg: NG.getLabel('webinvoiceInvoiceOriginUploadingFile'),
                success: function (fp, o) {
                    if (o.result.success) {

                        var file = o.result.file;

                        files.add({
                            fileName: file.fileName,
                            createDate: file.createDate,
                            isAttachment: false,
                            isSigned: isSigned,
                            fileOrigin: fileDescription,
                            customerFileName: customerFileName,
                            invoiceFileOrigin: 'Local'
                        });

                        filefield.disable();
                        infoBox.removeAll();
                        infoBox.add(Ext.create('NG.view.webinvoice.InformationBox', {
                            data: {
                                closable: true,
                                icon: true,
                                iconCls: 'n-pdf-icon',
                                content: '<div class="n-text-overflow" style="width:145px;">' + fileDescription + '<br/>' + customerFileName + '</div>'
                            }
                        }));
                    }
                    else {                            
                    }
                },
                failure: function (form, action) {
                }
            });
        }
        return false;
    },

然后,如果我从#infobox 中删除文件,则调用 reset() 函数:

onRemoveFileClick: function (view) {
            var me = this,
            invoiceorigin = view.up('invoiceorigin'),
            uploadNoSignBtn = invoiceorigin.down('#uploadnosign'),
            uploadAndSignBtn = invoiceorigin.down('#uploadandsign'),
            infoBox = invoiceorigin.down('#fileuploadinfoplaceholder'),
            draft = me.getDraft(),
            files = draft.files(),
            pagemanager = view.up('webinvoicepagemanager'),
            invoiceFilePlace = files.findExact('isAttachment', false);

        me.deleteFileConfirmReject(
            NG.getLabel('webinvoiceInvoiceOriginDeleteInvoiceFileTitle'),
            NG.getLabel('webinvoiceInvoiceOriginDeleteInvoiceFileMsg'),
            function (buttonId, text, opt) {
                if (buttonId == 'yes') {
                    infoBox.removeAll();
                    if (invoiceFilePlace > -1) {
                        files.removeAt(invoiceFilePlace);
                    }

                    me.fillInvoiceOriginStep(pagemanager);

                    uploadNoSignBtn.reset();
                    uploadAndSignBtn.reset();
                    uploadNoSignBtn.enable();
                    uploadAndSignBtn.enable();
                }
            });
    }

在此操作之后,如果我将选择相同的文件....页面没有任何反应...页面上没有触发任何更改事件..但是,如果我选择不同的文件,则行为正常。 在 ExtJS 文档中说 reset() 函数必须清除以前上传的文件...但是它没有帮助。

是否有任何机构遇到此类文件上传 ExtJS 行为并可以帮助解决此问题?

非常感谢。

【问题讨论】:

    标签: javascript extjs file-upload extjs4 extjs4.1


    【解决方案1】:

    我尝试并做得很好的是使用典型的 JS document.getElementsByName('[name you given]'); 从表单中获取文件,它完美地上传了文件对你的执行情况很重要。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2018-11-11
      • 2017-06-18
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 2016-03-20
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多