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

问题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