`

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", 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/

 

  • 大小: 24.4 KB
3
2
分享到:
评论
1 楼 清名清心 2016-10-27  
找了好多帖子,这是最简单的解决方法!

相关推荐

    ajaxSubmit上传文件IE解析

    本文将围绕一个具体的案例——使用`ajaxSubmit`插件上传文件时,在Internet Explorer浏览器中的解析问题进行深入分析,并给出相应的解决方案。 #### 问题描述 案例中提到的问题主要集中在使用`ajaxSubmit`插件上传...

    使用ajaxSubmit文件实现多文件的异步上传

    `ajaxSubmit`是jQuery Form Plugin的一部分,它允许我们使用Ajax技术实现表单的异步提交,包括多文件上传。这种方式不仅可以提高用户体验,因为用户无需等待页面刷新,还能有效管理服务器资源,避免一次性处理大量...

    解决IE下AjaxSubmit上传文件提示下载文件问题

    本文将深入探讨如何解决在IE下使用AjaxSubmit上传文件时出现提示下载文件的问题。 首先,让我们理解问题的核心所在。AjaxSubmit是jQuery Form插件的一个功能,它允许我们在不刷新整个页面的情况下,通过Ajax方式...

    【Demo Project】ajaxSubmit+Servlet表单文件上传和下载

    【AjaxSubmit+Servlet实现表单文件上传与下载详解】 在Web开发中,文件上传和下载是常见的功能,尤其是在用户交互丰富的应用中。本项目【Demo Project】利用AjaxSubmit结合Servlet技术,提供了一种高效、异步的方式...

    ajaxSubmit多文件上传用的包

    ajaxSubmit多文件上传用的包

    AjaxSubmit()提交file文件

    使用AjaxSubmit()方法上传file文件时,需要确保服务器端接口能够处理multipart/form-data类型的数据,因为文件上传通常都是以这种类型进行的。服务器端处理完毕后返回的响应可以通过success回调函数进行处理,例如...

    AjaxSubmit实现图片无刷新上传

    本教程将深入讲解如何利用AjaxSubmit实现图片的无刷新上传,同时支持多图上传和预览功能。 一、Ajax基础 Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,它通过在后台与服务器进行少量数据交换...

    ajaxSubmit 提交使用的文件

    ajaxSubmit 提交使用的文件,解决form提交后导致重复提交数据问题

    ajaxSubmit_一个封装了上传代码的ajax插件_

    在本篇文章中,我们将深入探讨一个名为"ajaxSubmit"的插件,它是一个专门用于文件上传的工具,极大地简化了前端与后端接口的交互过程。 **ajaxSubmit 插件概述** `ajaxSubmit`是一个基于jQuery的插件,它扩展了...

    php结合jquery异步上传图片(ajaxSubmit)

    在本文中,我们将深入探讨如何使用PHP和jQuery结合AjaxSubmit实现异步图片上传功能。这个功能在现代Web应用中非常常见,它允许用户无需刷新页面就能上传图片,提高用户体验。 首先,我们需要理解jQuery的AjaxSubmit...

    SpringMVC+jQuery(ajaxSubmit) 异步上传图片

    在本文中,我们将深入探讨如何使用SpringMVC和jQuery的ajaxSubmit插件实现异步上传图片的功能。这个功能在现代Web应用中非常常见,能够提供流畅的用户体验,无需页面刷新即可完成文件上传。 首先,我们需要了解...

    ssm_ajaxsubmit-ajax提交-模态对话框-ajax上传文件

    在这个项目中,“ssm_ajaxsubmit-ajax提交-模态对话框-ajax上传文件”涉及了几个关键的技术点,主要包括:Ajax异步提交、模态对话框以及文件上传。下面将详细解析这些知识点。 1. **Ajax异步提交** Ajax...

    jsp中使用jquery的ajaxSubmit方法实现现异步上传

    在本篇文章中,我们将探讨如何在Java Server Pages (JSP)中利用jQuery的`ajaxSubmit`方法实现异步文件上传,这在现代Web应用中是常见的需求。 首先,我们需要引入jQuery库。在给定的文件列表中,我们有两个版本的...

    jQuery中的AjaxSubmit使用讲解

    jQuery Form插件包含了AjaxSubmit和AjaxForm等方法,因此在使用前需要确保引入了正确的脚本文件,如: ```html &lt;script type="text/javascript" src="/js/jquery/jquery-1.8.0.min.js"&gt;&lt;/script&gt; ...

    jquery实现兼容IE8的异步上传文件

    在文件描述中,作者提到了使用jQuery插件实现兼容IE8的异步上传文件。jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互的过程。IE8是一个较旧版本的微软浏览器,其对JavaScript的...

    jQuery使用ajaxSubmit()提交表单示例

    在这个示例中,处理的方式是显示一个提示框表示提交成功。然后,通过调用.resetForm()方法重置表单的输入内容,使其清空以供用户再次填写。 最后,在事件处理函数的末尾,返回了false来阻止表单的默认提交行为。这...

    Ajax-jquery-ajaxSubmit.zip

    Ajax-jquery-ajaxSubmit.zip,使用ajax和json轻松提交表单。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的...

    HTML多文件上传插件,可一次上传多个文件.zip

    "ajaxform插件使用时报错ajaxSubmit() is not a function - html文件中有多个jquery.js文件时可能会引起冲突.url"提醒我们,如果页面中包含了多个jQuery库,可能导致命名冲突,`ajaxSubmit()`函数无法识别。...

Global site tag (gtag.js) - Google Analytics