使用jQuery的ajaxSubmit 上传文件时,在IE中会弹出下载提示框:
页面代码:
- var options = {
- url: "<%=path%>/upload/upload",
- type: "POST",
- dataType:'html',
- success:function(json) {
- alert("json:"+json);
- },
- error:function(er){
- alert("er:"+er);
- //functionChange(er.responseText);
- }
- };
- $('#picForm').ajaxSubmit(options);
后台代码:
- /***
- * {"fileName":"20141002125209_571slide4.jpg","path":"D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\upload\\image\\20141002125209_571slide4.jpg"}
- * @param file
- * @param request
- * @param response
- * @return
- * @throws IOException
- */
- @ResponseBody
- @RequestMapping(value = "/upload")
- public ModelAndView upload(
- @RequestParam(value = "image223", required = false) MultipartFile file,
- HttpServletRequest request, HttpServletResponse response)
- throws IOException {
- Map map = new HashMap();
- if (ValueWidget.isNullOrEmpty(file)) {
- map.put("error", "not specify file!!!");
- } else {
- System.out.println("request:" + request);// org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest@7063d827
- System.out.println("request:" + request.getClass().getSuperclass());
- // String formFileTagName=null;//"file2"
- // for( ;multi.hasMoreElements();){
- // String element=multi.nextElement();
- // formFileTagName=element;//表单中标签的名称:file标签的名称
- // // System.out.println("a:"+element+":$$");
- // break;
- // }
- String fileName = file.getOriginalFilename();// 上传的文件名
- fileName=fileName.replaceAll("[\\s]", "");//IE中识别不了有空格的json
- // 保存到哪儿
- String finalFileName = TimeHWUtil.formatDateByPattern(TimeHWUtil
- .getCurrentTimestamp(),"yyyyMMddHHmmss")+ "_"
- + new Random().nextInt(1000) + fileName;
- File savedFile = getUploadedFilePath(request,
- Constant2.UPLOAD_FOLDER_NAME + "/image", finalFileName,
- Constant2.SRC_MAIN_WEBAPP);// "D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\ upload\\pic\\ys4-1.jpg"
- System.out.println("[upload]savedFile:"
- + savedFile.getAbsolutePath());
- // 保存
- try {
- file.transferTo(savedFile);
- } catch (Exception e) {
- e.printStackTrace();
- }
- map.put("fileName", fileName);
- map.put("path", savedFile.getAbsolutePath());
- System.out.println("map:"+map);
- }
- ModelAndView modelAndView = new ModelAndView(
- new MappingJacksonJsonView(), map);
- /*
- * {"fileName":"20141002125209_571slide4.jpg","path":"D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\upload\\image\\20141002125209_571slide4.jpg"}
- * */
- return modelAndView;
- }
解决方法:让action返回String,而不是ModelAndView.
修改后的action:
- /***
- * {"fileName":"20141002125209_571slide4.jpg","path":"D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\upload\\image\\20141002125209_571slide4.jpg"}
- * @param file
- * @param request
- * @param response
- * @return
- * @throws IOException
- */
- @ResponseBody
- @RequestMapping(value = "/upload")
- public String upload(
- @RequestParam(value = "image223", required = false) MultipartFile file,
- HttpServletRequest request, HttpServletResponse response)
- throws IOException {
- String content = null;
- Map map = new HashMap();
- if (ValueWidget.isNullOrEmpty(file)) {
- map.put("error", "not specify file!!!");
- } else {
- System.out.println("request:" + request);// org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest@7063d827
- System.out.println("request:" + request.getClass().getSuperclass());
- String fileName = file.getOriginalFilename();// 上传的文件名
- fileName=fileName.replaceAll("[\\s]", "");//IE中识别不了有空格的json
- // 保存到哪儿
- String finalFileName = TimeHWUtil.formatDateByPattern(TimeHWUtil
- .getCurrentTimestamp(),"yyyyMMddHHmmss")+ "_"
- + new Random().nextInt(1000) + fileName;
- File savedFile = getUploadedFilePath(request,
- Constant2.UPLOAD_FOLDER_NAME + "/image", finalFileName,
- Constant2.SRC_MAIN_WEBAPP);// "D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\ upload\\pic\\ys4-1.jpg"
- System.out.println("[upload]savedFile:"
- + savedFile.getAbsolutePath());
- // 保存
- try {
- file.transferTo(savedFile);
- } catch (Exception e) {
- e.printStackTrace();
- }
- ObjectMapper mapper = new ObjectMapper();
- map.put("fileName", "a");
- map.put("path", savedFile.getAbsolutePath());
- try {
- content = mapper.writeValueAsString(map);
- System.out.println(content);
- } catch (JsonGenerationException e) {
- e.printStackTrace();
- } catch (JsonMappingException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- System.out.println("map:"+map);
- }
- // ModelAndView modelAndView = new ModelAndView(
- // new MappingJacksonJsonView(), map);
- /*
- * {"fileName":"20141002125209_571slide4.jpg","path":"D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\upload\\image\\20141002125209_571slide4.jpg"}
- * */
- return content;
- }
项目使用spring MVC框架
参考:http://www.kankanews.com/ICkengine/archives/42240.shtml
http://www.yunmasoft.com/