[code="java"]
public String importFile() {
// TODO Auto-generated method stub
this.flag="import";
//从此处开始属于预先校验部分。
//这部分校验的全部放到一个StrutsUtils这样的工具类的validateFile方法中。统一返回String,如果为null,则验证成功,不为null,则验证失败,msg为失败信息
if (myFile == null) {
this.msg="导入文件名获取失败!";
return SUCCESS;
}
if (fileName == null || "".equals(fileName)) {
this.msg="导入文件名获取失败!";
return SUCCESS;
}
String[] tempfn=fileName.split("_");
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
boolean isImport=true;
try {
sdf.parse(tempfn[0]);
} catch (ParseException e) {
// TODO Auto-generated catch block
isImport=false;
}
if(!isImport){
this.msg="文件名不符合命名规则,请选择正确的备份文件导入!";
return SUCCESS;
}
//从此处结束属于预先校验部分
//下面文件处理部分,放到文件处理帮助类中,也可放到StrutsUtils工具类中。
String localfilePath = ServletActionContext.getServletContext()
.getRealPath("/backup/files");
File imageFile = new File(localfilePath);
if (!imageFile.exists()) {
imageFile.mkdirs();
}
localfilePath += "/" + fileName;
imageFile = new File(localfilePath);
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
Object keyname = session.getAttribute("keyname");
Object keyright = session.getAttribute("keyright");
int right = 0;
String pcname="";
if (keyright != null) {
right=Integer.valueOf(keyright.toString());
}
if(keyname!=null){
pcname=keyname.toString();
}
//这里需要业务层处理,直接在action调用
Backup bk=auditlogService.findBackupByName(fileName);
if (!imageFile.exists()) {// 如果文件存在不覆盖,直接返回导入成功
boolean isCopy=auditlogService.importFile(pcname, request.getRemoteAddr(), right, pcname, myFile, imageFile, request.getLocalAddr());
if(!isCopy){
this.msg="导入失败!";
}else{
this.msg="导入完成!";
}
}else{
if(bk==null){//如果文件存在,数据库没有备份记录
//下面若干语句应该放在业务层处理
Backup bkis = new Backup();
bkis.setName(fileName);
bkis.setStatus("0");
bkis.setAuthority(right);
String createtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new Date());
bkis.setCreatedate(createtime);
auditlogService.backup(bkis);
}
Auditlog a = new Auditlog();
a.setSn(sn);
a.setInternettype(0);
a.setTypeid(right);
Auditlogtype auditlogtype = auditlogService.findTypeById(right);
if (auditlogtype != null) {
a.setTypename(auditlogtype.getName());
}
a.setCreatedate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
a.setAddress(request.getRemoteAddr());
a.setSubname(pcname);
a.setObjname(request.getLocalAddr());
a.setActionid(9);
a.setActionname("导入");
a.setLevelid(1);
a.setLevelname("一般");
a.setExpandrecord("导入文件:" + fileName+" 文件已存在,不能重复导入!");
a.setResult(1);
auditlogService.save(a);
this.msg="文件存在,不能重复导入!";
}
return SUCCESS;
}
[/code]