`
屌丝学Java
  • 浏览: 30096 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用jquery的上传插件:ajaxfileupload.js实现excel文件上传

    博客分类:
  • Java
 
阅读更多
最近做的一个使用jQuery提供的上传插件,上传excel文件功能,为了看起来美观通过一个按钮<Button />的点击事件来触发文件上传标签<input type="file" />,提交的SpirngMVC 的Controller,
<button type="button" style="height: 35px; " class="paymentBtn"  onclick="javascript:open_upload();">上传交费明细</button> 
<input type="file" id="excel_file" name="excel_file" onchange="fileSelected();" style="display:none">                    
<button type="button" style="height: 35px;display:none; width: 120px;" id="start_upload" class="sel_btn" onclick="javascript:start_upload();">开始上传</button>

<script type="text/javascript">
 //打开选择文件窗口
  function open_upload(){
	  var flag=document.getElementById("excel_file").click();
  }

 //上传文件
 function ajaxFileUpload(paymentTitle_,excel_file_,paymentYear_,paymentMonth_,paymentTimez_,paymentContent_) {
     $.ajaxFileUpload
     (
         {
             url: '${ctxPath}/upload/uploadPreview', 
             type:'POST',
             data: { 
            	 'paymentTitle': paymentTitle_,
            	 'excel_file': excel_file_,
            	 'paymentYear':paymentYear_,
            	 'paymentMonth':paymentMonth_,
            	 'paymentTimez':paymentTimez_,
            	 'paymentContent':paymentContent_
             }, 
             secureuri: false, 
             fileElementId: 'excel_file', //文件上传域的ID
             contentType: 'text/html', 
             dataType: 'text', //返回值类型 一般设置为json
             success: function (data1,status) 
             {
                 var data=eval('('+data1+')');
            	 hideLoading();
            	 if(data.success){
            		 $(".templateName").html(data.original_name);
         		 	 $("#notice").css('opacity','1');
                	 
                	 var content="";
               		 $.each(data.rList, function(i, item) {  
                		 content+="<tr><td class='col-md-1 text-center'>"+item.xuhao+"</td><td class='col-md-2 text-center'>"+
                        		  item.uuid+"</td><td class='col-md-1 text-center'>"+
                        		  item.name+"</td><td class='col-md-3 text-center'>"+
                        		  item.phonenum+"</td><td class='col-md-3 text-center'>"+
                        		  item.bzmsg+"</td><td class='col-md-2 text-center'>"+
                        		  item.feenum+"</td></tr>";    
                	  });  
         			content+="<tr><td></td><td></td><td></td><td></td><td style='text-align:right;'>总金额:</td><td class='text-center'>"+data.dangfei_total+"</td></tr>";
        		 	$('.dangfei_Wapper').show();
         			$(".dangfei_notice").html(content); 
        		 	$("#ensurediv").css('display','block');
            	 }else{
            		 sweetalert(data.msg);
            	 }
            	 
             },
             error: function(XMLHttpRequest, textStatus, errorThrown) {
				 alert(XMLHttpRequest.status);
				 alert(XMLHttpRequest.readyState);
				 alert(XMLHttpRequest.responseText);				 
				 //alert(textStatus);
				  debugger;
				  hideLoading();
            	 sweetalert('服务器开小差了...');
			   },
			   complete: function(XMLHttpRequest, textStatus) {
			       //this; // 调用本次AJAX请求时传递的options参数
			   }
             
         }
     )
     return false;
 }
</script>



dataType使用"json",contentType使用"application/json',后台返回字符串。

问题来了:1、虽然经过了SpirngMVC配置文件的设置来防止IE浏览器提示保存json文件,Controller返回json,但是在IE11下,仍然提示保存json文件。
解决办法:是页面改为text/html提交方式,后台通过response来返回响应内容。
2、jquery.min_1_9_1.js以及以后的版本,不支持ajaxfileupload.js中的browser.version属性设置
解决方法:添加jquery-browser.js 见附件。
注意页面引入顺序要注意,
<script src="${ctxPath}/lib/jquery.min_1_9_1.js"></script>
    <script src="${ctxPath}/lib/jquery-browser.js"></script>
    <script src="${ctxPath}/lib/ajaxfileupload.js"></script>


//页面做的兼容性设置
<html lang="zh-CN">
	<head>
	<meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">


后台代码
/**
	 * 上传文件信息预览
	 * 
	 * @param
	 * @return
	 * @throws IOException 
	 */
	@RequestMapping(value = "/uploadPreview", method = RequestMethod.POST)
	public void uploadPreview(
			@RequestParam(value = "excel_file", required = false) MultipartFile file,
			HttpServletRequest request, HttpServletResponse response)
			throws IOException {
		String json = "";
		Map<String, Object> resultMap = new HashMap<String, Object>();
		try {
		   json = JsonUtils.toJson(resultMap);
		} catch (Exception e) {
			// TODO: handle exception
			logger.error("uploadPreview", e);
			resultMap.put("msg", "上传出错或上传的Excel文件不合法");
			resultMap.put("success", false);
			json = JsonUtils.toJson(resultMap);
		}
		response.setContentType("text/html;charset=UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.getWriter().print(json);
	}


最后还有一个问题,在IE9/IE10下有保护机制,只能通过点击上传标签来上传文件,不能通过其它按钮的触发时间来上传,否则,禁止提交文件。
解决办法:使用 <label for="excel_file" ></label>来替代Button,用其for属性来指向对应的<input type="file" id="excel_file" />标签,这样就能提交了,好奇快!
参考URL:http://blog.csdn.net/x1172031988/article/details/70142895
  • lib.rar (34.2 KB)
  • 下载次数: 4
分享到:
评论

相关推荐

    Jquery上传插件文件ajaxfileupload.js 修复版下载

    使用Jquery做上传文件处理时,用到了ajaxfileupload.js 这个第三方代码,但是这个js几乎就是半成品,问题很多。现在整理如下并附修复版的ajaxfileupload.js下载。 问题: 1:无法带参数提交,只能上传文件; 2:...

    ajaxfileupload.js完整使用全套(带对应jquery+demo)

    `ajaxfileupload.js`是一个JavaScript库,用于实现异步文件上传功能,避免了传统文件上传时页面刷新的问题。它与jQuery的结合使得文件上传更加简便、高效。 首先,我们来理解`ajaxfileupload.js`的核心概念。这个...

    ajaxfileupload.js用于文件上传

    ajaxfileupload.js用于文件上传

    AjaxFileUpload.js

    AjaxFileUpload.js是一个专为实现异步文件上传功能而设计的JavaScript库,它利用Ajax技术实现了无刷新的文件上传,极大地提升了用户体验。在本文中,我们将深入探讨AjaxFileUpload.js的工作原理、使用方法以及相关的...

    方便自己下载的ajaxfileupload.js备份

    其次,`ajaxfileupload.js`是主要的文件,它是一个专门用于文件上传的插件,基于jQuery构建。这个插件允许用户在不刷新页面的情况下,通过Ajax技术上传图片。异步上传意味着用户可以选择文件后,后台可以开始上传...

    一个支持Jquery3 的ajaxfileupload.js

    通过修改终于使得ajaxfileupload兼容jquery3,代码已上线运行。

    ajaxfileupload.js 异步上传jquery插件

    **AjaxFileUpload.js** 是一个基于 jQuery 的异步文件上传插件,它允许用户在不刷新页面的情况下上传文件,提供了一种便捷、高效的文件交互体验。这个插件广泛应用于网页应用,尤其是那些需要用户交互频繁上传文件的...

    ajaxfileupload.js文件下载

    此为前端进行文件上传,使用Ajax方式提交的js插件,使用方便简洁,开发很高效。

    jquery的上传插件ajaxfileupload.js

    现在网上下载的上传插件(ajaxfileupload.js)很多都不支持通过设置data来传参,我这里改了一下。

    ajaxfileupload.js

    ajaxfileupload.js, jquery异步文件上传插件

    jquery-1.2.1.js和ajaxfileupload.js

    在实际应用中,将“jquery-1.2.1.js”和“ajaxfileupload.js”结合使用,可以轻松地实现在网页上添加一个动态的、用户友好的文件上传功能。首先,在页面中引入jQuery库,然后引入AjaxFileUpload插件。接着,通过编写...

    解决ajaxfileupload.js在IE9,firefox下文件超大无效

    本文将详细介绍如何解决在IE9和Firefox下使用`AjaxFileUpload.js`进行文件上传时遇到的大文件上传失效的问题。 #### 问题描述 当尝试通过`AjaxFileUpload.js`上传较大文件至服务器时,在IE9和Firefox浏览器中可能...

    JSP使用ajaxFileUpload.js实现跨域问题.docx

    本文主要介绍如何在JSP项目中使用`ajaxFileUpload.js`插件解决跨域文件上传的问题,并提供了一个具体的示例代码,包括前端JS部分以及后端JSP和Struts2相关的处理逻辑。通过这个例子,我们可以深入了解整个跨域文件...

    使用ajaxupload.js/ajaxfileupload.js实现文件上传

    `ajaxupload.js` 和 `ajaxfileupload.js` 是两个用于实现异步文件上传的JavaScript库,它们简化了这个过程并提供了丰富的自定义选项。 首先,`ajaxupload.js` 是一个轻量级的插件,它扩展了传统的Ajax功能,允许...

    使用ajaxFileUpload.js上传文件

    总的来说,`AjaxFileUpload.js`是一个强大的JavaScript文件上传插件,通过与服务器端脚本配合,可以实现高效、便捷的文件上传功能。在实际项目中,我们需要结合具体需求进行适当的定制和优化,以实现最佳的用户体验...

    ajaxfileupload.js,支持多文件上传

    jQuery.extend({ createUploadIframe: function (id, uri) { //create frame var frameId = 'jUploadFrame' + id; var iframeHtml = '&lt;iframe id="' + frameId + '" name="' + frameId + '" top:-9999px;...

    ajax上传文件插件ajaxfileupload.js非压缩版

    为了解决这个问题,Ajax技术被广泛应用于实现异步文件上传,其中,`ajaxfileupload.js`是一个常用的JavaScript插件,它允许开发者在不刷新页面的情况下实现文件的上传功能。 ### 一、Ajaxfileupload.js原理 ...

    SpringMVC结合ajaxfileupload.js实现文件无刷新上传

    在这个场景下,我们将讨论如何结合前端JavaScript库ajaxfileupload.js实现文件的无刷新上传,提高用户体验。 首先,我们需要理解SpringMVC的工作原理。SpringMVC是一个模型-视图-控制器(MVC)架构模式的实现,它...

    上传文件 commons-fileupload-1.1.jar jquery.ajaxfileupload.js 以及demo

    接下来,`jquery.ajaxfileupload.js` 是一个基于jQuery的文件上传插件,它扩展了jQuery的Ajax功能,使得在前端可以通过异步方式实现文件上传,提升用户体验。该插件的主要特性包括: 1. 异步上传:使用Ajax技术,...

Global site tag (gtag.js) - Google Analytics