——————————DescriptionStart——————————
运行环境 Java≥8、MySQL≥5.7
开发工具 eclipse/idea/myeclipse/sts等均可配置运行
适用 课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SpringBoot+JPA网盘系统设计和实现(java+springboot+ssm+jpa+thymeleaf+html+maven)
很多同学都有自己的网盘,方便存储一些java学习教程。该毕业设计实现了一个简易的网盘,包含文件上传和文件分享等功能。 后端技术采用了spring,spring mvc,JPA,前端采用了thymeleaf模板语言。整体业务功能相对不是太复杂,亮点是文件分享功能。
——————————CodeStart——————————
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 User dataBaseUser = userService.queryUserByUsername(userName); if (dataBaseUser != null && encryptedPwd.equals(dataBaseUser.getPassWord())) { User user = new User(userName, encryptedPwd, dataBaseUser.getLevelType(), dataBaseUser.getEmail(), dataBaseUser.getPhone(), dataBaseUser.getAlias()); request.getSession().setAttribute("user" , user); logger.info("用户登录成功!" ); map.put("result" , "1" ); map.put("userName" , userName); } else if (dataBaseUser != null && !encryptedPwd.equals(dataBaseUser.getPassWord())) { logger.info("密码错误!" ); map.put("result" , "2" ); } else { logger.info("用户不存在!" ); map.put("result" , "0" ); } return map; } @RequestMapping(value = "/quit", method = RequestMethod.GET) public String loginOut (HttpServletRequest request) { if (!SystemUtil.isWindows()) { FileUtil.deleteDir(fileRootPath + WebUtil.getUserNameByRequest(request)); } request.getSession().invalidate(); logger.info("退出登录成功!" ); return "login" ; } @RequestMapping(value = "/signin", method = RequestMethod.POST) @ResponseBody public Map<String, Object> signin (@RequestParam(required = false) String alias, @RequestParam(required = true) String userName, @RequestParam(required = true) String password, @RequestParam(required = false) String regcode, @RequestParam(required = false) String email, @RequestParam(required = false) String phone, HttpServletRequest request, HttpServletResponse response) { Map<String, Object> map = new HashMap<>(); String encryptedPwd = "" ; try { encryptedPwd = Md5SaltTool.getEncryptedPwd(password); } catch (NoSuchAlgorithmException e) { logger.error("NoSuchAlgorithmException:" , e);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 String ffmepgpath = fileRootPath + "/ffmpeg/bin" ; Map<String, Object> retmap = ConvertVideo.convertVideo(filepath, ffmepgpath); String retstr = (String) retmap.get("flag" ); j.setMsg((String) retmap.get("path" )); if ("complete" .equals(retstr)) { j.setSuccess(true ); } else if ("transcoding" .equals(retstr)) { j.setMsg("" ); } return j; } @GetMapping(value = "/getspacesize") @ResponseBody public ResponseMsg getSpaceSize (HttpServletRequest request) { String userName = WebUtil.getUserNameByRequest(request); Map<String, String> spaceMap = new HashMap<>(); spaceMap.put("totalSpace" , "80" ); double totalSpace = 80 ; if ("guest" .equals(userName)) { spaceMap.put("totalSpace" , "40" ); totalSpace = 40 ; } long dirlength = SystemUtil.getDirSpaceSize(fileRootPath + userName); double dirlengthDouble = dirlength / 1024.0 / 1024 / 1024 ; String usedeSpace = String.format("%.2f" , dirlengthDouble); logger.warn("usedeSpace:{}" , usedeSpace); String freeSpace = String.format("%.2f" , totalSpace - Double.valueOf(usedeSpace)); logger.warn("freeSpace:{}" , freeSpace); spaceMap.put("freeSpace" , freeSpace); ResponseMsg responseMsg = new ResponseMsg(); responseMsg.setSuccess(true ); responseMsg.setMsg(JSONObject.toJSONString(spaceMap)); String aString = "ddssddsd" ;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 logger.error("UnsupportedEncodingException:" , e); } User dataBaseUser = userService.queryUserByUsername(encryptedPwd); if (!iVerifyCodeService.isValid(regcode)) { logger.info("注册失败,激活码失效或不正确!" ); map.put("result" , "2" ); return map; } else { if (dataBaseUser == null ) { User user = new User(userName, encryptedPwd, "0" , email, phone, alias); userService.add(user); logger.info("账号注册成功!" ); map.put("result" , "1" ); } else { logger.info("用户已经存在,请登录或换一个用户名!" ); map.put("result" , "0" ); } return map; } } @RequestMapping(value = "/username", produces = "application/json; charset=utf-8") @ResponseBody public ResponseMsg fileRename (HttpServletRequest request) { ResponseMsg j = new ResponseMsg(); User user = (User) request.getSession().getAttribute("user" ); String userName = user.getUserName(); if (userName == null ) { userName = "null" ; } j.setMsg(userName); j.setSuccess(true ); return j; } @RequestMapping(value = "/getUserByUserName") @ResponseBody public User getUserByUserName (HttpServletRequest request) { User user = (User) request.getSession().getAttribute("user" ); return user; } @RequestMapping(value = "/updateUserByUserName") @ResponseBody public ResponseMsg updateUserByUserName (@RequestParam(required = false) String username, @RequestParam(required = false) String alias, @RequestParam(required = false) String password, @RequestParam(required = false) String email, @RequestParam(required = false) String phone,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 public ResponseMsg shareCallBack (String link) { logger.warn("执行shareCallBack接口!:" + link); ResponseMsg j = new ResponseMsg(); if (link.isEmpty()) { j.setMsg("提取码为空!" ); return j; } String downloadLink = fileService.fileShareCodeDecode(link); logger.warn("downloadLink:" + downloadLink); if (!"null" .equals(downloadLink)) { j.setSuccess(true ); j.setMsg(downloadLink); } else { j.setMsg("提取码不正确!" ); } return j; } @RequestMapping(value = "/sharefile", produces = "application/json; charset=utf-8") @ResponseBody public ModelAndView shareFile (String link) { logger.warn("shareFie接口的运行!" ); String downloadLink = "" ; if (!link.isEmpty()) { downloadLink = link; } logger.warn("zc1+downloadLink:" + downloadLink); LinkSecret linkSecret = linkSecretService.findLinkSecretBysecretLink(downloadLink); if (linkSecret == null ) { ModelAndView modelAndView = new ModelAndView("errorPage" ); modelAndView.addObject("message" , "链接失效" ); return modelAndView; } else { Date date1 = linkSecret.getExpireDate(); if (date1 == null ) { ModelAndView modelAndView = new ModelAndView("shareSecret" ); modelAndView.addObject("link" , link); return modelAndView; } else { long dataTemp = System.currentTimeMillis(); Date date2 = new Date(dataTemp); if (date1.before(date2)) { ModelAndView modelAndView = new ModelAndView("errorPage" ); modelAndView.addObject("message" , link + "链接失效" ); FileUtil.delete(downloadLink); return modelAndView;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 @RequestMapping(value = "/registerCode") public ModelAndView registerCode (ModelAndView modelAndView, HttpServletRequest request) { String username = WebUtil.getUserNameByRequest(request); if ("sandeepin" .equals(username) || "cflower" .equals(username)) { modelAndView.setViewName("registerCode" ); return modelAndView; } else { modelAndView.setViewName("errorPage" ); modelAndView.addObject("message" , "没有权限生成验证码!" ); return modelAndView; } } @RequestMapping(value = "proRegisterCode", produces = "application/json; charset=utf-8") @ResponseBody public ResponseMsg proRegisterCode (@RequestParam String customName, HttpServletRequest request) { String registerCode = PassWordCreate.createPassWord(6 ); VerifyCode verifyCode = new VerifyCode(); verifyCode.setState(false ); verifyCode.setRegisterCode(registerCode); verifyCode.setOperatePerson(WebUtil.getUserNameByRequest(request)); verifyCode.setDate(new Date()); verifyCode.setCustomName(customName); boolean result = iVerifyCodeService.save(verifyCode); ResponseMsg responseMsg = new ResponseMsg(); responseMsg.setSuccess(result); if (result) { responseMsg.setMsg(registerCode); } else { responseMsg.setMsg("生成注册码失败,请重新操作!" ); } return responseMsg; } } package com.bjpowernode.pan.config;
——————————PayStart——————————
项目链接: https://javayms.github.io?id=401422292105200fl https://javayms.pages.dev?id=401422292105200fl