問題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方法來確定