基于javaweb的网盘系统设计和实现(java+ssm+jpa)
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
} else {
ModelAndView modelAndView = new ModelAndView("shareSecret");
modelAndView.addObject("link", link);
return modelAndView;
}
}
}
}
//定位到分享页面
@RequestMapping("/share")
public ModelAndView share(String link, HttpServletRequest request) {
logger.warn("zzc:" + link);
EncryptUtil des = null;
String linkDecoder = "";
try {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, expireDays);
Date date = cal.getTime();
linkSecret.setExpireDate(date);
}
logger.warn("b:" + b);
linkSecret.setSecretLink(b);
linkSecretService.save(linkSecret);
//test
LinkSecret linkSecretTemp = linkSecretService.findLinkSecretByLocalLinkAndUserName(localLink, userName);
logger.warn(linkSecretTemp.getSecretLink());
//test
} else {
if (expireDays != -1) {
return j;
}
// 文件分享下载地址sharefile(创建链接)-----share(定位到分享页面)-shareCallBack(验证提取码是否正确)
@RequestMapping(value = "/sharefile", produces = "application/json; charset=utf-8")
@ResponseBody
public ModelAndView shareFile(String link) {
logger.warn("shareFie接口的运行!");
String downloadLink = "";
if (!link.isEmpty()) {
// downloadLink= fileService.fileShareCodeDecode(link);
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");
}
if (phone != null) {
user.setPhone(phone);
}
userService.update(user);
j.setMsg("更新用户信息成功!");
j.setSuccess(true);
return j;
}
//检查是否是登录状态
@RequestMapping(value = "/islogin")
@ResponseBody
public ResponseMsg isLogin(@RequestParam(required = false) String savePath, HttpServletRequest request) {
if (savePath == null) {
savePath = "/";
}
ResponseMsg j = new ResponseMsg();
// 获取用户名
User user = (User) request.getSession().getAttribute("user");
InputStream inStream = new FileInputStream(filePath);
if (!new File(filePath).exists()) {
responseMsg.setMsg("找不到文件");
}
// 设置输出的格式
String agent = request.getHeader("user-agent");
String fileName4 = "";
if (agent.contains("Firefox")) {
fileName4 = new String(filename.getBytes(), "iso-8859-1");
} else {
//空格,(,),;,@,#,&,逗号在谷歌浏览器中出现乱码
fileName4 = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20").
replaceAll("%28", "\\(").
replaceAll("%29", "\\)").
replaceAll("%3B", ";").
replaceAll("%40", "@").
replaceAll("%23", "\\#").
replaceAll("%26", "\\&").
replaceAll("%2C", "\\,");
}
response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName4 + "\"");
// 循环取出流中的数据
@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,
HttpServletRequest request) {
ResponseMsg j = new ResponseMsg();
User user = (User) request.getSession().getAttribute("user");
if (username != null) {
user.setUserName(username);
}
if (alias != null) {
user.setAlias(alias);
}
if (password != null) {
try {
// 获取用户名
String userName = WebUtil.getUserNameByRequest(request);
String filePathAndName = userName + "/" + path + "/" + fileName;
filePathAndName = StringUtil.stringSlashToOne(filePathAndName);
logger.warn("filePathAndName:" + filePathAndName);
String b = fileService.fileShareCodeEncode(filePathAndName);
String secret = "";
File file = new File(fileRootPath + "/" + filePathAndName);
String localLink = "/data/share/" + filePathAndName;
//存入数据库
LinkSecret linkSecret = linkSecretService.findLinkSecretByLocalLinkAndUserName(localLink, userName);
if (linkSecret == null) {
//设置提取密码
secret = PassWordCreate.createPassWord(secretLen);
linkSecret = new LinkSecret();
linkSecret.setLocalLink(localLink);
if (flag) {
j.setSuccess(true);
j.setMsg("删除成功!");
} else {
j.setMsg("删除失败!");
}
return j;
}
// 文件重命名 文件夹重命名时 老名字写path 新名字写newName oldName填@dir@
@RequestMapping(value = "/filerename", produces = "application/json; charset=utf-8")
@ResponseBody
public ResponseMsg fileRename(String oldName, String newName, String path, HttpServletRequest request) {
if (path == null) {
path = "/";
}
ResponseMsg j = new ResponseMsg();
if (oldName.isEmpty() || newName.isEmpty()) {
j.setMsg("文件名字为空!");
return j;
}
// 获取用户名
String userName = WebUtil.getUserNameByRequest(request);
ResponseMsg responseMsg = new ResponseMsg();
responseMsg.setSuccess(false);
responseMsg.setMsg("密码不正确!");
return responseMsg;
}
}
// 文件提取码生成,当再次分享同一个文件,只更新过期时间
@RequestMapping(value = "/generateShareLink", produces = "application/json; charset=utf-8")
@ResponseBody
public ResponseMsg generateShareLink(@RequestParam String expireDay, String fileName, String path,
HttpServletRequest request) {
String expireDayString = expireDay;
int expireDays = 3;
if (expireDayString != null) {
if (expireDayString.equals("永久有效")) {
expireDays = -1;
} else {
expireDays = Integer.parseInt(expireDayString);
}
}
if (path == null) {
String userName = WebUtil.getUserNameByRequest(request);
String filePathAndName = userName + "/" + path + "/" + fileName;
filePathAndName = StringUtil.stringSlashToOne(filePathAndName);
logger.warn("filePathAndName:" + filePathAndName);
String b = fileService.fileShareCodeEncode(filePathAndName);
String secret = "";
File file = new File(fileRootPath + "/" + filePathAndName);
String localLink = "/data/share/" + filePathAndName;
//存入数据库
LinkSecret linkSecret = linkSecretService.findLinkSecretByLocalLinkAndUserName(localLink, userName);
if (linkSecret == null) {
//设置提取密码
secret = PassWordCreate.createPassWord(secretLen);
linkSecret = new LinkSecret();
linkSecret.setLocalLink(localLink);
linkSecret.setSecret(secret);
linkSecret.setUserName(userName);
linkSecret.setDownloadNum(0);
linkSecret.setFileName(fileName);
if (expireDays != -1) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, expireDays);
Date date = cal.getTime();
linkSecret.setExpireDate(date);
}