2022首次更文挑战第27天 | 云盘系统的开发01

154 阅读2分钟

「这是我参与2022首次更文挑战的第27天,活动详情查看:2022首次更文挑战

仿百度网盘开发的在线云盘系统

这次我们开发一个基于SpringBoot的仿百度网盘的系统,这个是在线的一个云盘系统。

技术栈是:Spring+Spring mvc+Springdata jpa+Bootstrap+jquery+Webuploader+Thymeleaf。

主要的功能有:注册登录,上传文件,图片预览,在线播放视频,重命名文件,在线播放音乐,分享文件。

显示云盘大小 在这里插入图片描述 上传文件 在这里插入图片描述 输入提取码 在这里插入图片描述

实体类的设计:

文件信息:文件名,链接,大小,时间,描述,转码(转码的值有:

*noneed:不需要转码,
* transcodable:可转码
 * transcoding:转码中
 * complete:转码完成
 * failed:转码失败)
public class FileMsg {
    private String name;

    private String link;

    private String size;

    private String time;

    private String description;

    private String transcode = "noneed";
	//getter,setter
}

给前台返回的操作结果:是否成功,信息

public class ResponseMsg {
    private boolean success = false;

    private String msg = "";
    //getter,setter
}

分享信息(百度云盘分享文件的相关信息):文件名,下载次数,过期时间,分享时间,下载次数

public class ShareMessage {
    private String fileName;

    private int downloadNum;

    private Date expireDate;

    private String time;

    private List<String> downloadName;
    //getter,setter
}

视频转化

我们在云盘那里,经常会上传视频,但是视频是不能直接播放的,这个时候,我们需要把视频进行转化。

传过来的两个参数,url:视频源地址,ffmpegPath:存放目录。 1、先定义一个map,存放视频源地址和视频存放目录。 2、如果视频存放目录为空,直接给个新目录。 3、url.replace("/data/", fileRootPath + "/");得到新的视频地址。 4、往map存放路径和转码信息。 5、进行转码,如果成功直接返回map

public static Map<String, Object> convertVideo(String url, String ffmpegPath) {
       Map<String, Object> map = new HashMap<>(2);
       ffmpegTaskMap.put(url, map);
       String toolPath = ffmpegPath;
       if (StringUtils.isBlank(toolPath)) {
           toolPath = getFfmpegPath();
       }
       url = url.replace("/data/", fileRootPath + "/");
       String outputPath = getOutputPath(url);

       map.put("path", outputPath);
       map.put("flag", "transcoding");
       try {
           Boolean ffmpeg = FfmpegUtil.ffmpeg(toolPath, url, outputPath);
           map.put("flag", (ffmpeg == true) ? "complete" : "failed");
       } catch (Exception e) {
           logger.error("Exception:", e);
       }
       return map;
   }

实现效果: 在这里插入图片描述