ExtJs - IE8 + IE9上的文件上传错误

时间:2013-09-02 11:05:37

标签: php javascript extjs4.1

我在实际的EXTJS版本上创建了一个文件上传到我的服务器。如果文件成功上载,则后端会创建json响应以在前端处理。在Chrome和Firefox上它的工作正常,但在IE上它总是下载json响应作为文件并中断这样的过程,任何想法如何在IE上阻止这个?

由于

3 个答案:

答案 0 :(得分:1)

请告诉我。你正在使用什么版本。我正在使用extjs 3.4文件在所有浏览器中上传其工作文件。

   new Ext.form.FormPanel({

            fileUpload : true,

            items:[new Ext.form.TextField({
                id:"iconUpload",
                fieldLabel: 'Image',
                inputType: 'file',
                name: 'appIcon'

            })],
            listeners : {
                render : function(form){
                }
            },
            buttonAlign: 'center',
            buttons: [{
                text     : 'Submit',
                formBind : true,
                handler  : function(){
                   itemPanel.getForm().submit({
                        waitMsg: "Progress ...",
                        success: function(form, action){

                        },
                        failure: function(form, action){

                        }
                    });

                }
            }]

        });

答案 1 :(得分:1)

所以我找到了解决方案,问题在于Content-Type。 Normaly我正在使用json响应,但IE8和IE9遇到了麻烦,所以你必须发送一个“text / html”内容类型来解决这个问题

答案 2 :(得分:0)

MartinMB答案基本上是正确的。这个答案旨在提供更多的背景。

In Ext JS,文件上传不是使用普通的Ajax'来执行的。技术,即它们不是使用XMLHttpRequests执行的。而是临时创建包含所有字段的隐藏元素,并使用其目标集提交以引用动态生成的隐藏元素,该元素将插入到文档中,但在收集返回数据后将被删除。

浏览器解析服务器响应以创建IFRAME的文档。如果服务器使用JSON发送返回对象,则必须将Content-Type标头设置为text/html,以告知浏览器将文本未更改地插入文档正文中。

Chrome,FF,IE10及以上版本在他们在响应标头中看到Content-Type = application/json时就会发生这种情况。但是,当您对IE8和IE9执行此操作时,当服务器从文件上载时响应时,您会看到一条消息,其中包含以下内容:"是否要打开或保存此文档"?

所以,要在IE8和IE9中修复它,只需Content-Typetext/html,你就可以了。现代浏览器响应相同,因此您不会使用该解决方案破坏任何内容。