ublic void insert(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
JsonMsg jsonMsg=new JsonMsg();
//判断表单是否是文件上传的表单
if (!ServletFileUpload.isMultipartContent(request)){
// 如果不是则停止
jsonMsg.setMsg( “Error: 表单必须包含 enctype=multipart/form-data”);
returnJson(response,jsonMsg);
}
SimpleDateFormat dateFormat=new SimpleDateFormat(“yyyyMMdd_HHmmssSSS_”);
//配置上传相关的参数
DiskFileItemFactory factory=new DiskFileItemFactory();
//设置存临界值 - 超过后将产生临时文件并存储于临时目录中
factory.setSizeThreshold(MEMORY_THRESHOLD);
//设置临时存储目录
factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
ServletFileUpload upload=new ServletFileUpload(factory);
//设置文件最大值 30M
upload.setFileSizeMax(MAX_FILE_SIZE);
//设置请求的大小最大值
upload.setSizeMax(MAX_REQUEST_SIZE);
//中文编码
upload.setHeaderEncoding("UTF-8");
//判断文件存放目录是否存在
File uploadDir=new File(UPLOAD_PATH);
if (!uploadDir.exists()){
uploadDir.mkdirs();
}
SysUser saveUser=new SysUser();
//解析请求内容,提前文件 和 普通参数
try {
List<FileItem> fileItems=upload.parseRequest(request);
if (fileItems != null && fileItems.size() > 0){
//遍历
for (FileItem item:fileItems) {
//获取自动名称 -- 参数名request.getParameter("")
String fieldName=item.getFieldName();
//判断是文件 还是普通字段
if (!item.isFormField()){
//不是表单元素 文件
if ("portrait".equals(fieldName)){//判断是否是头像文件
//拼接文件名 item.getName()--》文件名
String fileName=dateFormat.format(new Date())+System.nanoTime()+Tools.getFileExt(item.getName());
//存放路径
String filePath=UPLOAD_PATH+fileName;
File saveFile=new File(filePath);
System.err.println(filePath);
//保存文件到硬盘
item.write(saveFile);
//把文件名保存到需要新增的对象中
saveUser.setPortrait(fileName);
}
}else {
// 表单元素
//需要通过流去读取
BufferedReader br=new BufferedReader(new InputStreamReader(item.getInputStream(), StandardCharsets.UTF_8));
String strValue=br.readLine();//读取到值
if (fieldName==null) continue;
switch (fieldName) {
case "userName": //用户名
if (Tools.isNotNull(strValue)) {
saveUser.setUserName(strValue);
} else {
throw new RuntimeException("请输入用户名!");
}
break;
case "userPassword": //密码
String userPassword = strValue;
if (Tools.isNotNull(userPassword)) {
Random random = new Random();
//生成一个随机的8位数作为盐 10000000 ~ 99999999
String salt = String.valueOf(random.nextInt(90000000) + 10000000);
//对输入的密码+盐 取MD5值
userPassword = MD5Util.getMD5(userPassword + salt);
saveUser.setUserPassword(userPassword);
saveUser.setSalt(salt);
} else {
throw new RuntimeException("请输入密码!");
}
break;
case "departmentId": //部门id
if (Tools.isInteger(strValue)) {
saveUser.setDepartmentId(Integer.parseInt(strValue));
} else {
throw new RuntimeException("请选择部门!");
}
break;
case "positionId": //职位id
if (Tools.isInteger(strValue)) {
saveUser.setPositionId(Integer.parseInt(strValue));
} else {
throw new RuntimeException("请选择职位!");
}
break;
case "roleId": //角色id
if (Tools.isInteger(strValue)) {
saveUser.setRoleId(Integer.parseInt(strValue));
} else {
throw new RuntimeException("请选择角色!");
}
break;
case "name": //姓名
saveUser.setName(strValue);
break;
case "gender": //性别
if (Tools.isInteger(strValue)) {
saveUser.setGender(Byte.parseByte(strValue));
} else {
throw new RuntimeException("请选择性别!");
}
break;
case "birthday": //生日
if (Tools.isNotNull(strValue)) {
SimpleDateFormat dateFormatBirthday = new SimpleDateFormat("yyyy-MM-dd");
saveUser.setBirthday(dateFormatBirthday.parse(strValue));
}
break;
case "email": //email
saveUser.setEmail(strValue);
break;
case "mobile": //手机号
saveUser.setMobile(strValue);
break;
case "qq": //qq
saveUser.setQq(strValue);
break;
case "wechat": //微信
saveUser.setWechat(strValue);
break;
case "userStatus": //状态
if (Tools.isInteger(strValue)) {
saveUser.setUserStatus(Byte.parseByte(strValue));
} else {
throw new RuntimeException("请选择性别!");
}
break;
case "remark": //备注
saveUser.setRemark(strValue);
break;
}
}
}
boolean isOk=this.userService.insert(saveUser);
if (isOk){
jsonMsg.setState(true);
jsonMsg.setMsg("新增成功");
}else{
jsonMsg.setMsg("新增失败");
}
}else{
jsonMsg.setMsg("参数异常");
}
} catch (FileUploadBase.SizeLimitExceededException e) {
e.printStackTrace();
jsonMsg.setMsg("您上传文件超过了上传文件" + MAX_FILE_SIZE + "M 的限制");
} catch (FileUploadException e) {
e.printStackTrace();
jsonMsg.setMsg("文件上传失败");
} catch (RuntimeException e) {
e.printStackTrace();
//数据校验失败的异常信息
jsonMsg.setMsg(e.getMessage());
}catch (Exception e) {
e.printStackTrace();
jsonMsg.setMsg("表单提交失败");
}
returnJson(response,jsonMsg);
}