前后端分离时导入excel
前后端分离时导入excel
前端页面:
<form action="" method="post" class="form form-horizontal" enctype="multipart/form-data" id="form-duty-upload"> <div id="tab-category" class="HuiTab"> 选择文件: <span class="btn-upload form-group"> <input class="input-text upload-url radius" type="text" name="uploadfile-1" id="uploadfile-1" readonly><a href="javascript:void();" class="btn btn-primary radius"><i class="Hui-iconfont"></i> 浏览文件</a> <input type="file" multiple name="file" id="file" class="input-file"> </span> <p style="color: red;">上传的文件必须解密,不然会出现导入失败</p> <div class="row cl"> <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3"> <input class="btn btn-primary radius" type="submit" value=" 提交 "> </div> </div> </div> </form>
前端js:
$("#form-duty-upload").validate({ onkeyup:false, focusCleanup:true, success:"valid", submitHandler:function(form){ var uploadFile = new FormData($("#form-duty-upload")[0]); uploadFile.enctype="multipart/form-data"; var controlType = parent.$("#controlType_hide").val() uploadFile.append("controlType",controlType); var addDicParam = { url:ss.urlMapping['UPLOADDATA'], param: uploadFile, callback:function(data){ var code = data.returnCode; if(code == '1'){ var index = parent.layer.getFrameIndex(window.name); parent.$('#search_btn').click(); parent.layer.close(index); }else{ $.Huimodalalert(data.data,4000); } }, errCallback: function () { $.Huimodalalert('导 入 信 息 失 败',2000); } } ss.upload(addDicParam); } });
ss.upload方法:
ss.upload = function(params){
console.info(params.param); return $.ajax({ type: "POST", url: params.url, cache: false, data: params.param, processData: false, contentType: false, dataType:"json", /*enctype:"multipart/form-data",*/ success: function (data) { if(data.returnCode == '401' || data.returnCode == '403'){ location.href="/"; return null; }else{ if (undefined !== params.callback) { params.callback(data); } } }, error: function (XMLHttpRequest, textStatus, errorThrown) { if (params.errCallback) { params.errCallback(XMLHttpRequest, textStatus, errorThrown); }else{ var errorMsg = "网络异常,请重新进入"; alert(errorMsg); } } }); };
后台java代码:
@RequestMapping(value = "import")
@ResponseBody public ResultMsg<Object> importDuty(@RequestParam("file") MultipartFile file, HttpServletRequest request){ long createdBy = (long)request.getSession().getAttribute("CURRENT_USER"); ResultMsg<Object> rs = new ResultMsg<Object>(); boolean a = false; String fileName = file.getOriginalFilename(); try { a = driverBenefitService.batchImport(fileName, file, createdBy); rs = ResultMsg.returnMsgSuccess("文件导入成功"); } catch (Exception e) { e.printStackTrace(); logger.error(e.getMessage()); rs = ResultMsg.returnMsgFail(e.getMessage()); } return rs; }
作者:若往夕之
来源:CSDN
原文:https://blog.csdn.net/java_chegnxuyuan/article/details/94734833
版权声明:本文为博主原创文章,转载请附上博文链接!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
C#开发中使用委托的作用和好处
先看概念,什么是委托? 从程序的角度来讲:你就可以把委托看成是用来执行方法(函数)的一个“指针” 通俗的说就是:通过委托,我们可以把方法当成参数传递。 这里我举个例子:“设想,如果我们写了一个厨师做菜的方法,里面有拿菜、切菜、配菜、炒菜四个步骤,但编写此方法代码的人想让配菜这个环节让调用方法的人来实现,换句话说,就是想把方法作为参数来传递,那么怎么来实现呢? 方法1:使用接口,这里不是我们讨论的。 方法2:使用委托、微软为我们提供了一个叫做委托的类型,委托允许我们把一个方法当成参数传递。委托的定义 就上面的例子,拿菜、切菜、配菜、炒菜我们定义4个方法,抽象成一个做菜类(ZuoCai.cs)。 public class ZuoCai { //定义一个做菜的委托 public delegate void ZuoCaiDelegate(); /// 拿菜方法 public void NaCai() { Console.WriteLine("A负责拿菜!"); } /// 切菜方法 public void QieCai() { Console.WriteLine("B负责切菜!"); } //...
- 下一篇
【Android电量】Battery Historian高级用法
Wakelock analysis Kernel trace analysis Other command line tools Wakelock analysis 默认情况下,Android不会记录指定应用的用户空间下wakelock transitions的时间戳。如果想要让 Historian 在timeline展示每个 individual wakelock 的详细信息,就需要在开始操作试验之前通过下面的命令开启 full wakelock reporting。 adb shell dumpsys batterystats --enable full-wake-history 需要注意的是,一旦开启 full wakelock reporting,电池历史日志记录将在几小时后溢出。使用此选项可进行短期测试(3-4小时)。 Kernel trace analysis 要生成记录内核唤醒源和内核唤醒锁活动的跟踪文件, 首先开启 kernel trace logging: $ adb root $ adb shell Set the events to trace. $ echo "...
相关文章
文章评论
共有0条评论来说两句吧...