2020-10-07

    科技2024-12-20  7

    2020暑期培训答辩作品——周任务发布网站

    目录

    2020暑期培训答辩作品——周任务发布网站 一、项目介绍二、设计思路三、主要功能介绍1.新增周任务2.文件下载3.文件重新上传 总结


    一、项目介绍

    后台主页面

    填写周任务说明

    网站周任务首页

    周任务上传与下载

    二、设计思路

    管理员登录进入后台,发布、管理周任务和用户,用户登录进入可以下载周任务文件并上传文件来完成周任务新增周任务,上传文件时都需要获取用户id,作为与用户表的联系发布周任务时使用文本编辑器填写周任务信息,之后可以修改相关信息上传周任务压缩包,建立一个对应时间的目录存放,文件命名用上传时间加随机数防止重名

    三、主要功能介绍

    1.新增周任务

    代码如下:

    @RequestMapping("/addTask") public String addTask(Task task, @RequestParam("file")MultipartFile file, HttpSession session) throws IOException { //获取上传文件用户的id User user= (User) session.getAttribute("admin"); //处理周任务 Date date =new Date(); task.setReleaseDate(date); String userName=userService.findById(user.getId()).getUserName(); task.setUserName(userName); taskService.insertTask(task); //获取文件原始名称 String oldName=file.getOriginalFilename(); //获取文件后缀 String extension="."+FilenameUtils.getExtension(file.getOriginalFilename()); //生成新文件名 String newName=new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ UUID.randomUUID().toString().replace("-","")+extension; //根据日期生成目录 String realPath= ResourceUtils.getURL("classpath:").getPath()+"/static/task"; String dateFormat =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); String dateDirPath=realPath+"/"+dateFormat; File dateDir=new File(dateDirPath); if(!dateDir.exists()){ dateDir.mkdirs(); } System.out.println("周任务:"+task); System.out.println("文件"+file); //文件上传 file.transferTo(new File(dateDir,newName)); //将文件信息放入数据库中 UserFile userFile=new UserFile(); userFile.setOldName(oldName); userFile.setNewName(newName); userFile.setPath(dateFormat); userFile.setFlag(0); userFile.setTaskId(task.getId()); userFile.setUserId(user.getId()); fileService.addFile(userFile); return "redirect:/listTask"; }

    2.文件下载

    代码如下:

    @RequestMapping("/downloadFile") public void downloadTask(Integer taskId, HttpServletResponse response) throws IOException { UserFile file=fileService.selectFileByTaskId(taskId); String path=ResourceUtils.getURL("classpath:").getPath()+"/static/task/"+file.getPath(); //获取文件输入流 FileInputStream inputStream=new FileInputStream(new File(path,file.getNewName())); //附件下载 response.setHeader("content-disposition","attachment;fileName="+ URLEncoder.encode(file.getOldName(),"UTF-8")); //获取响应输出流 ServletOutputStream outputStream=response.getOutputStream(); IOUtils.copy(inputStream,outputStream); IOUtils.closeQuietly(inputStream); IOUtils.closeQuietly(outputStream); }

    3.文件重新上传

    代码如下:

    @RequestMapping("/uploadFile") public String uploadFile(MultipartFile newFile, HttpSession session) throws IOException { Integer taskId=(Integer) session.getAttribute("taskId"); User user= (User) session.getAttribute("admin"); UserFile oldUserFile=fileService.selectFileByTaskId(taskId); //删除旧文件 String realPath= ResourceUtils.getURL("classpath:").getPath()+"/static/task"+oldUserFile.getPath(); File oldFile=new File(realPath,oldUserFile.getNewName()); System.out.println(oldFile.exists()); if(oldFile.exists()) oldFile.delete(); //删除数据库中数据 fileService.deleteFileByTaskId(taskId); //重新上传数据 //获取文件原始名称 String oldName=newFile.getOriginalFilename(); //获取文件后缀 String extension="."+ FilenameUtils.getExtension(newFile.getOriginalFilename()); //生成新文件名 String newName=new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ UUID.randomUUID().toString().replace("-","")+extension; //根据日期生成目录 String path= ResourceUtils.getURL("classpath:").getPath()+"/static/task"; String dateFormat =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); String dateDirPath=path+"/"+dateFormat; File dateDir=new File(dateDirPath); if(!dateDir.exists()){ dateDir.mkdirs(); } //文件上传 newFile.transferTo(new File(dateDir,newName)); //将文件信息放入数据库中 UserFile userFile=new UserFile(); userFile.setOldName(oldName); userFile.setNewName(newName); userFile.setPath("/"+dateFormat); userFile.setFlag(0); userFile.setTaskId(taskId); userFile.setUserId(user.getId()); fileService.addFile(userFile); return "redirect:/listTask"; }

    总结

    网站主页面比较简单,不够美观,更多细节的功能还有待实现,很多功能的异常处理没有实现。没有很好的利用js和ajax来简化一些功能的实现,还没有部署到服务器上,还需要学习。学习到了一个完整的网站的设计思路及实现,虽然很多没有想到的问题都出现了,但是还是基本解决了。这个周任务发布网站主要学会了文件的上传与下载功能,还有就是文本编辑器的实现,暑假还是有蛮大的收获的。
    Processed: 0.022, SQL: 8