前后端分离时导入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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL数据库在高并发下的优化方案
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题