使用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/
相关推荐
本文将围绕一个具体的案例——使用`ajaxSubmit`插件上传文件时,在Internet Explorer浏览器中的解析问题进行深入分析,并给出相应的解决方案。 #### 问题描述 案例中提到的问题主要集中在使用`ajaxSubmit`插件上传...
`ajaxSubmit`是jQuery Form Plugin的一部分,它允许我们使用Ajax技术实现表单的异步提交,包括多文件上传。这种方式不仅可以提高用户体验,因为用户无需等待页面刷新,还能有效管理服务器资源,避免一次性处理大量...
本文将深入探讨如何解决在IE下使用AjaxSubmit上传文件时出现提示下载文件的问题。 首先,让我们理解问题的核心所在。AjaxSubmit是jQuery Form插件的一个功能,它允许我们在不刷新整个页面的情况下,通过Ajax方式...
【AjaxSubmit+Servlet实现表单文件上传与下载详解】 在Web开发中,文件上传和下载是常见的功能,尤其是在用户交互丰富的应用中。本项目【Demo Project】利用AjaxSubmit结合Servlet技术,提供了一种高效、异步的方式...
ajaxSubmit多文件上传用的包
使用AjaxSubmit()方法上传file文件时,需要确保服务器端接口能够处理multipart/form-data类型的数据,因为文件上传通常都是以这种类型进行的。服务器端处理完毕后返回的响应可以通过success回调函数进行处理,例如...
本教程将深入讲解如何利用AjaxSubmit实现图片的无刷新上传,同时支持多图上传和预览功能。 一、Ajax基础 Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,它通过在后台与服务器进行少量数据交换...
ajaxSubmit 提交使用的文件,解决form提交后导致重复提交数据问题
在本篇文章中,我们将深入探讨一个名为"ajaxSubmit"的插件,它是一个专门用于文件上传的工具,极大地简化了前端与后端接口的交互过程。 **ajaxSubmit 插件概述** `ajaxSubmit`是一个基于jQuery的插件,它扩展了...
在本文中,我们将深入探讨如何使用PHP和jQuery结合AjaxSubmit实现异步图片上传功能。这个功能在现代Web应用中非常常见,它允许用户无需刷新页面就能上传图片,提高用户体验。 首先,我们需要理解jQuery的AjaxSubmit...
在本文中,我们将深入探讨如何使用SpringMVC和jQuery的ajaxSubmit插件实现异步上传图片的功能。这个功能在现代Web应用中非常常见,能够提供流畅的用户体验,无需页面刷新即可完成文件上传。 首先,我们需要了解...
在这个项目中,“ssm_ajaxsubmit-ajax提交-模态对话框-ajax上传文件”涉及了几个关键的技术点,主要包括:Ajax异步提交、模态对话框以及文件上传。下面将详细解析这些知识点。 1. **Ajax异步提交** Ajax...
在本篇文章中,我们将探讨如何在Java Server Pages (JSP)中利用jQuery的`ajaxSubmit`方法实现异步文件上传,这在现代Web应用中是常见的需求。 首先,我们需要引入jQuery库。在给定的文件列表中,我们有两个版本的...
jQuery Form插件包含了AjaxSubmit和AjaxForm等方法,因此在使用前需要确保引入了正确的脚本文件,如: ```html <script type="text/javascript" src="/js/jquery/jquery-1.8.0.min.js"></script> ...
在文件描述中,作者提到了使用jQuery插件实现兼容IE8的异步上传文件。jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互的过程。IE8是一个较旧版本的微软浏览器,其对JavaScript的...
在这个示例中,处理的方式是显示一个提示框表示提交成功。然后,通过调用.resetForm()方法重置表单的输入内容,使其清空以供用户再次填写。 最后,在事件处理函数的末尾,返回了false来阻止表单的默认提交行为。这...
Ajax-jquery-ajaxSubmit.zip,使用ajax和json轻松提交表单。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的...
"ajaxform插件使用时报错ajaxSubmit() is not a function - html文件中有多个jquery.js文件时可能会引起冲突.url"提醒我们,如果页面中包含了多个jQuery库,可能导致命名冲突,`ajaxSubmit()`函数无法识别。...