2020暑假答辩

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


一、项目介绍

后台主页面

后台管理主页
填写周任务说明

在这里插入图片描述
网站周任务首页

在这里插入图片描述

周任务上传与下载

在这里插入图片描述

二、设计思路

  • 管理员登录进入后台,发布、管理周任务和用户,用户登录进入可以下载周任务文件并上传文件来完成周任务
  • 新增周任务,上传文件时都需要获取用户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";
        }

总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值