IE中使用ajaxSubmit上传文件弹出下载提示框

使用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",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]",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(),"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/

相关文章

$.AJAX()方法中的PROCESSDATA参数 在使用jQuery的$.ajax()方...
form表单提交的几种方式 表单提交方式一:直接利用form表单提...
文章浏览阅读1.3k次。AJAX的无刷新机制使得在注册系统中对于...
文章浏览阅读1.2k次。 本文将解释如何使用AJAX和JSON分析器在...
文章浏览阅读2.2k次。/************************** 创建XML...
文章浏览阅读3.7k次。在ajax应用中,通常一个页面要同时发送...