摘要:页面上传txt文档,读取文档中的内容,查数据库中现有的信息(次新),更新到最新的数据中。
1 页面按钮按钮button需要绑定一个点击事件----οnclick= “clickFiles()” ,同时还需要一个input绑定一个改变事件----οnchange=“uploadSpecFiles()”
function clickFiles() {
$("#file").click();
}
function uploadSpecFiles() {
var formData = new FormData();
for (var i = 0; i < $("#file")[0].files.length; i++) {
formData.append("file", $("#file")[0].files[i]);
}
var le = $("#file")[0].files.length;
if (le == 0) {
layer.alert("请选择文件!");
return;
} else if (le > 1) {
layer.alert("只能选择一个文件上传!");
$("#file").val("");
return;
} else {
//获取文件名最后一个.的位置
var index= $("#file")[0].files[0].name.lastIndexOf(".");
//获取文件名后缀
var ext = $("#file")[0].files[0].name.substr(index+1);
if(!isAssetType(ext)){
layer.alert("请上传正确的格式!");
$("#file").val("");
return;
}
//上传方法
$.ajax({
cache: true,
url: getUrlCutJsessionId(ctx, "XXX/XXX"), //所需要的列表接口地址
data: formData,
dataType: "json",
type: "post",
contentType: false,
processData: false,
error: function (request) {
layer.msg("Connection error");
formData = new FormData();
$("#file").val("");
},
success: function (r) {
if (r.success) {
if(r.data == '0'){
layer.open($.extend({
content: '上传失败',
yes: undefined
}, false ? {} : undefined));
}else {
console.log(r.data);//返回的是一个map集合
layer.alert("上传成功,共上传"+r.data['XXX']+"条记录,继承信息成功"+r.data['XXX']+"条记录!");
}
$("#file").val("");
formData = new FormData();
} else {
$("#file").val("");
layer.alert(r.msg);
formData = new FormData();
}
}
});
}
}
//判断后缀是否合规
function isAssetType(suffix) {
return ['txt'].
indexOf(suffix.toLowerCase()) !== -1;
}
2 读取文件
1>在读取文件时,用到了MultipartFile工具类。
用工具类中的file.getOriginalFilename()得到文件名称,判断文件名称中是否包含特殊字符
String filename = file.getOriginalFilename();
if(!CheckUtil.checkUploadFileName(filename)){
rr.setSuccess(false);
rr.setMsg("文件名中不能包含特殊字符。");
return rr;
}
//判断文件后缀是否符合要求
String suffix = filename.substring(filename.lastIndexOf(".") + 1);
if(!"txt".equals(suffix)){
rr.setMsg("导入文件必须为txt文件");
rr.setSuccess(false);
return rr;
}
2>
Map3 更新信息params = new HashMap<>(); List hrList = new ArrayList<>(); try { //创建转换流对象 参数是字节输入流对象 InputStreamReader reader=new InputStreamReader(file.getInputStream()); //转换输入流 BufferedReader br = new BufferedReader(reader); String line="";//定义字符串 保存行数据 while (line !=null) { SeriousIllnessPolicy serious = new SeriousIllnessPolicy(); //读取行数据 line = br.readLine(); if(line !=null && !"".equals(line)){//如果行为空,则跳过 serious.setEccPersonNo(line); hrList.add(serious);//添加到集合中 } } if (hrList.size() < 1) { result.setMsg("导入数据为空"); result.setSuccess(false); return result; } params.put("hrList",hrList); } catch (IOException e) { e.printStackTrace(); }
ListhrList = (List ) params.get("hrList"); ObjectMapper mapper = new ObjectMapper(); List list = mapper.convertValue(hrList, new TypeReference >() {}); …… //根据得到的list,遍历,查数据库,然后更新信息
获取参数时,可能出现的错误类型转换异常:java.lang.ClassCastException: java.util.linkedHashMap cannot be cast to XXX
更新数据量大时,建议用jdbc的写法进行批量更新。



