小编典典

EXTJS Fileupload-IE8安全栏问题

ajax

我正在尝试制作EXTJS应用程序以发送带有附件的电子邮件。因此,我有一个非常基本的表单,其中包括主题的文本字段,带有inputType:附件的’file’的另一个文本字段以及html编辑器。

var panel = new Ext.form.FormPanel({
    fileUpload:true,
    labelAlign: 'right',        
    monitorValid: true,
    border: false,
    bodyBorder: false,       
    defaults:{
        anchor: '100%',
        labelStyle: 'font-weight:bold;'
    },
    items: [
        {
            xtype: 'textfield',
            fieldLabel: 'SUBJECT',
            name: 'subject',
            allowBlank: false
        },
        {
            xtype: 'textfield',
            fieldLabel: 'ATTACHMENT',
            name: 'file_to_upload',
            anchor: '80%',
            itemCls: 'attachment-field',
            allowBlank: true,
            inputType:'file'
        },
        {
            xtype: 'htmleditor',
            fieldLabel:'MESSAGE',
            name:'msg'
        }
    ]
});

并将此表单放置在将提交给服务器的窗口中:

var window = new Ext.Window({
    title: 'Compose a message',
    height: 600,
    width: 800,
    autoScroll: true,
    border: false,
    bodyBorder: false,        
    items: panel,
    buttons:[
        {
            text: 'Send',
            formBind: true,
            handler: function() {
                panel.getForm().submit({
                    url: *Call to the server*,
                    method  : 'POST',
                    timeout: 300000, // 5min
                    waitMsg: 'Please wait while we send your email',                        
                    success :function(form, action) {
                        window.close();
                    }                                                
                });
            }
        },
        {
            text: 'Close',
            handler: function() {
                window.close();
            }
        }
    ]
});

当我使用FF将表单提交到服务器时,一切工作都很好。但是IE8会出现问题。IE显示安全栏,表示我正在尝试将文件下载到计算机,这与我正在做的事情(我正在上传文件)完全相反!

如何防止触发此安全栏?

--EDIT 2010年12月18日,美国东部时间16:48–是否可能由以下原因引起:(来自EXTJS basicForm文档)

文件上传不是使用常规的“
Ajax”技术执行的,也就是说,它们不是使用XMLHttpRequests执行的。而是以标准方式提交表单,并临时修改DOM元素,使其目标设置为引用动态生成的隐藏对象,该对象将插入文档中,但在收集返回数据后将其删除。服务器响应由浏览器解析,以创建IFRAME的文档。如果服务器使用JSON发送返回对象,则必须将Content-
Type标头设置为“ text / html”,以告知浏览器将未更改的文本插入文档主体。对于HTML解析器重要的字符必须作为HTML实体发送,因此将“
<”编码为“
<”,将“&”编码为“&”等。从文档中检索响应文本,并创建一个包含responseText属性的伪XMLHttpRequest对象,以便符合事件处理程序和回调的要求。请注意,文件上传数据包以内容类型multipart
/ form发送,某些服务器技术(特别是JEE)可能需要进行一些自定义处理,以便从数据包内容中检索参数名称和参数值。

我认为我不了解那里的所有解释…

-结束编辑-

谢谢阿兰


阅读 274

收藏
2020-07-26

共1个答案

小编典典

这就是Ext写入文档的内容。

<iframe id="ext-gen170" name="ext-gen170" class="x-hidden" src="about:blank"><html><head></head><body></body></html></iframe>

可以通过设置有效的https
src路径来解决此问题,例如https://yousite.com/blank.html

我还没有找到如何修改src的方法。任何帮助都将受到欢迎

2020-07-26