天天看點

基于SpringBoot架構的雲盤系統設計,附源碼

作者:程式猿大波

平時大家會接觸和用到很多雲盤,比如百度雲盤、阿裡雲盤、誇克雲盤等等,其實雲盤這東西在實作的時候,代碼的設計隻能算是一半的功勞,另一半是擁有一套強大的遠端存儲和寬帶支援。今天給大家介紹的就是一個雲盤系統,實作了正常雲盤該有的大部分功能,你如果有條件,可以使用這個系統元件自己的遠端雲盤系統,也可以拿這個項目來學習。

基于SpringBoot架構的雲盤系統設計,附源碼
基于SpringBoot架構的雲盤系統設計,附源碼

使用的技術

後端:JAVA開發語言,SpringBoot架構,MySql資料庫

前端:html頁面,BootStrap架構

基于SpringBoot架構的雲盤系統設計,附源碼
基于SpringBoot架構的雲盤系統設計,附源碼

實作的功能

實作了雲盤系統該有的大部分功能,包括上傳、下載下傳、建立檔案夾、重命名檔案或檔案夾、删除檔案或檔案夾等。

基于SpringBoot架構的雲盤系統設計,附源碼

部分代碼展示

/**
     * 獲得分片檔案臨時儲存路徑
     *
     * @param tempPath
     * @param userName
     * @param fileName
     * @return
     */
    public static String getTempDir(String tempPath, String userName, String fileName) {
        StringBuilder dir = new StringBuilder(tempPath);
        dir.append("/").append(userName);
        dir.append("/").append(DateUtil.getNowDate());
        dir.append("/").append(fileName);
        return dir.toString();
    }

    /**
     * 删除檔案,可以是檔案或檔案夾
     *
     * @param fileName 要删除的檔案名
     * @return 删除成功傳回true,否則傳回false
     */
    public static boolean delete(String fileName) {
        File file = new File(fileName);
        if (!file.exists()) {
            logger.warn("删除檔案失敗:" + fileName + "不存在!");
            return false;
        } else {
            if (file.isFile()) {
                return deleteFile(fileName);
            } else {
                return deleteDirectory(fileName);
            }
        }
    }

    /**
     * 删除單個檔案
     *
     * @param fileName 要删除的檔案的檔案名
     * @return 單個檔案删除成功傳回true,否則傳回false
     */
    public static boolean deleteFile(String fileName) {
        File file = new File(fileName);
        // 如果檔案路徑所對應的檔案存在,并且是一個檔案,則直接删除
        if (file.exists() && file.isFile()) {
            if (file.delete()) {
                logger.warn("删除單個檔案" + fileName + "成功!");
                return true;
            } else {
                logger.warn("删除單個檔案" + fileName + "失敗!");
                return false;
            }
        } else {
            logger.warn("删除單個檔案失敗:" + fileName + "不存在!");
            return false;
        }
    }

    /**
     * 删除目錄及目錄下的檔案
     *
     * @param dir 要删除的目錄的檔案路徑
     * @return 目錄删除成功傳回true,否則傳回false
     */
    public static boolean deleteDirectory(String dir) {
        // 如果dir不以檔案分隔符結尾,自動添加檔案分隔符
        if (!dir.endsWith(File.separator)) {
            dir = dir + File.separator;
        }
        File dirFile = new File(dir);
        // 如果dir對應的檔案不存在,或者不是一個目錄,則退出
        if ((!dirFile.exists()) || (!dirFile.isDirectory())) {
            logger.warn("删除目錄失敗:" + dir + "不存在!");
            return false;
        }
        boolean flag = true;
        // 删除檔案夾中的所有檔案包括子目錄
        File[] files = dirFile.listFiles();
        for (int i = 0; i < files.length; i++) {
            // 删除子檔案
            if (files[i].isFile()) {
                flag = FileUtil.deleteFile(files[i].getAbsolutePath());
                if (!flag) {
                    break;
                }
            }
            // 删除子目錄
            else if (files[i].isDirectory()) {
                flag = FileUtil.deleteDirectory(files[i].getAbsolutePath());
                if (!flag) {
                    break;
                }
            }
        }
        if (!flag) {
            logger.warn("删除目錄失敗!");
            return false;
        }
        // 删除目前目錄
        if (dirFile.delete()) {
            logger.warn("删除目錄" + dir + "成功!");
            return true;
        } else {
            return false;
        }
    }           

擷取源碼請關注後私信“20221123”