关于IE8上传文件的一些问题

本文解决了IE8不支持JSON格式响应的问题,通过将JSON数据以文本形式返回并在前端解析。同时介绍了如何正确判断文件上传状态,确保不同浏览器的一致性。

问题1:

IE8下上传完文件后,对后台返回的JSON格式的数据,浏览器提示了下载该文件。

原因是因为IE8还不支持'application/json"类型的响应。

解决方法将后台返回的JSON数据以文本的形式返回,再在前台将文本解析成JSON格式。

代码如下:

 Controller: 

    @RequestMapping(value="/doImport",method={RequestMethod.POST},produces = "text/html;charset=UTF-8")
    @ResponseBody
    public String doImport(HttpServletRequest request,HttpSession session){
       //TODO doImport;
    }

注解里返回值转成了文本形式,并指定了编码,避免乱码。

js:

$("#uploadForm").ajaxSubmit({
                    url: "doImport",
                    type: "POST",
                    clearForm :true,
                    dataType : "text",
                    success: function (data) {
              data = eval('(' + data + ')');
              // TODO doSomething
} });

 

问题二:当没有选择文件时,chrome和IE8的在后台接受到的数据也有所不同

正常选择文件上传时IE8:

不存在文件时 IE8:

这里我们上传的文件是excel,我们可以看到是否有文件上传时contentType是不同的,当没有文件上传时,显示为一个流文件。

 

再看chrome的表现:

正常上传时和IE8一致:

没有选择文件时:

得到的对象是一个null。

因此我们不能简单的判断对象是否为空来确定是否有文件,还要根据MulipartFile的isEmpty方法来确定

 

转载于:https://www.cnblogs.com/insaneXs/p/7088557.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值