首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >互联网Explorer8和9中的Ext Js文件字段问题

互联网Explorer8和9中的Ext Js文件字段问题
EN

Stack Overflow用户
提问于 2014-04-22 02:51:25
回答 1查看 208关注 0票数 0

我的表单中有一个文件域。当我通过控制器提交表单时,IE会显示安全栏,提示我正在尝试将文件下载到计算机上,这与我正在做的事情(我正在上传文件)完全相反。当我使用FF向服务器提交表单时,一切都运行得很好。但是IE8和ie9出现了一个问题。

控制器操作:

代码语言:javascript
复制
var myForm = Ext.getCmp('uploaddraftpcpPanel').getForm(); // get the basic form
if (myForm.isValid()) { // make sure the form contains valid data before submitting
    myForm.submit({


        headers: {
            enctype: 'multipart/form-data; charset=UTF-8'
        },
        url: 'upload/uploaddraftpcp.action',


        success: function (myForm, action) {
            Ext.Msg.alert('success', "success");
        },
        failure: function (myForm, action) {
            Ext.Msg.alert('Failed', "failed");
        }
    });


} else { // display error alert if the data is invalid
    Ext.Msg.alert('Invalid Data', 'Please correct form errors.');
}

服务器端代码如下所示:

代码语言:javascript
复制
@RequestMapping(value = "/upload/uploaddraftpcp.action", method = RequestMethod.POST)


public @ResponseBody
Map<String, ? extends Object> uploadDraftpcp(HttpServletRequest request){
    Map<String, Object> modelMap = new HashMap<String, Object>(2);

    try {

        System.out.println("title pcp" + request.getParameter("title"));
        System.out.println("description pcp"
                + request.getParameter("description"));
        //    response.setContentType("text/html");

        modelMap.put("message", "Successfully submitted Form");
        modelMap.put("success", true);
        return modelMap;
    } catch (Exception e) {
        System.out.println(e.toString());
        e.printStackTrace();
        return ExtJSReturn
                .mapError("Error retrieving data.");
    }

}
EN

回答 1

Stack Overflow用户

发布于 2015-04-03 14:28:04

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

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

当它们在响应头中看到Content-Type = application/json时,Chrome、FF、IE10和up就会执行此操作。但是,当您对IE8和IE9执行此操作时,当服务器响应文件上传时,您会看到一条消息,内容大致如下:“您想打开还是保存此文档”?

因此,要在IE8和IE9中解决这个问题,只需将Content-Type设置为text/html即可。现代浏览器的响应都是一样的,所以这个解决方案不会破坏任何东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23203813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档