- 浏览: 28503 次
- 性别:
- 来自: 北京
最新评论
最近做的一个使用jQuery提供的上传插件,上传excel文件功能,为了看起来美观通过一个按钮<Button />的点击事件来触发文件上传标签<input type="file" />,提交的SpirngMVC 的Controller,
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 见附件。
注意页面引入顺序要注意,
后台代码
最后还有一个问题,在IE9/IE10下有保护机制,只能通过点击上传标签来上传文件,不能通过其它按钮的触发时间来上传,否则,禁止提交文件。
解决办法:使用 <label for="excel_file" ></label>来替代Button,用其for属性来指向对应的<input type="file" id="excel_file" />标签,这样就能提交了,好奇快!
参考URL:http://blog.csdn.net/x1172031988/article/details/70142895
<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
发表评论
-
2019java面试题
2019-01-18 01:01 9281、Map: Map是一个接口,主要实现子类有Hash ... -
Properties文件读取操作
2017-12-20 15:36 579package com.cmccsi.framework.ut ... -
ajax发送请求到Spring MVC的Controller 返回json字符串乱码
2017-10-20 17:17 354copy地址:http://blog.csdn.net/dan ... -
Spring声明式事务
2017-08-17 17:28 398常用的SSH框架中,Spring往往配置HibernateTe ... -
为什么每次看了不就还会忘记?关于Struts1的知识。
2017-07-15 16:58 412同事二胎生儿子贺喜与领导升官:既有官运蓬,又有新儿喜。宾朋随喜 ... -
java中的Dae与Calendar
2016-11-28 14:37 543Date类 在JDK1.0中,Date类是唯一的一个代表时间的 ... -
后台调用http短信接口
2016-06-20 17:08 577两种方式,第一种只能用GET方式,POST方式会报 411错误 ... -
proxool连接池的一种配置方式
2016-06-16 15:00 654今天看一个旧系统的连接池配置文件,用的Struts1 : 1 ... -
java类中和js中Date类型数据的编辑实例
2016-02-22 18:00 437今天做一个页面的简单 ... -
关于spring在web.xml中的配置时用listerer和servlet的简述
2016-02-17 16:42 645今天在看一个视频项目时,web.xml中配置用的listene ... -
Java synchronized详解
2016-01-28 10:40 392转自:http://www.cnblogs.com/devin ... -
window.location.href用法
2015-08-18 17:32 822javascript中的location.href有很多种用 ... -
springMVC与struts2的区别 搜的
2015-07-11 17:25 434目前企业中使用SpringMvc的比例已经远远超过Struts ... -
转 java观察者模式
2015-07-11 17:06 422观察者模式——顾名思义,就是一个对象观察另一个对象,当被观察的 ... -
java: 关于反射
2015-07-11 13:52 345前段时间维护系统遇到的一个问题:在服务器上运行的程序有问题,本 ...
相关推荐
使用Jquery做上传文件处理时,用到了ajaxfileupload.js 这个第三方代码,但是这个js几乎就是半成品,问题很多。现在整理如下并附修复版的ajaxfileupload.js下载。 问题: 1:无法带参数提交,只能上传文件; 2:...
ajaxfileupload.js用于文件上传
通过修改终于使得ajaxfileupload兼容jquery3,代码已上线运行。
现在网上下载的上传插件(ajaxfileupload.js)很多都不支持通过设置data来传参,我这里改了一下。
ajaxfileupload.js, jquery异步文件上传插件
此为前端进行文件上传,使用Ajax方式提交的js插件,使用方便简洁,开发很高效。
1、jquery异步上传图片 2、js前端异步上传图片 3、下载免费 4、功能已测试可以使用
JSP使用ajaxFileUpload.js实现跨域问题.docx
jQuery.extend({ createUploadIframe: function (id, uri) { //create frame var frameId = 'jUploadFrame' + id; var iframeHtml = '<iframe id="' + frameId + '" name="' + frameId + '" top:-9999px;...
ajaxfileupload.js 异步上传jquery插件,亲测可用,有需要的可以选择下载
本文实例为大家分享了jquery实现异步文件上传的具体代码,供大家参考,具体内容如下 ajaxfileupload.js 异步上传文件: 直接引用。 调用方法: $.ajaxFileUpload({ url:'',//后台接口地址 type: post, secureuri...
博文 http://blog.csdn.net/qq_34273222/article/details/54428580 中所需要的js文件,如有问题请在博客留言。
ajaxfileupload.js实现文件异步上传
包含jar包:ajaxfileupload.js jquery-1.7.1.js jquery-1.10.2.js json2.js
对handleError错误,json返回值已修改,支持批量文件上传
整个案例是使用ajaxupload.js/ajaxfileupload.js实现文件上传,清晰明了,供大家参考,谢谢!!!
ajaxfileupload.js 上传文件不报错版本! 放心使用!! 平时自己用的
如题:ajax上传文件插件ajaxfileupload.js非压缩版
NULL 博文链接:https://zhaixp1949.iteye.com/blog/2260109