• 基于springboot和ftp实现的网盘文件系统


    目录
    摘 要 1
    Abstract 2
    1.项目简介 3
    1.1项目主要功能 4
    1.2技术栈 4
    1.3部署注意 4
    2.数据库设计 5
    2.1表结构 5
    2.2ER图 7
    2.3SQL插入 8
    3.项目开发 9
    3.1项目配置 9
    3.2接口开发 10
    3.3项目前端页面开发 12
    3.4后端接口开发 21
    3.4.1工具类 21
    3.4.2restful接口(部分源码) 27
    3.4.3FileService文件服务接口 31
    4.项目展示 32
    5.总结 35
    6.更新 35
    1.项目简介
    因为开发中很多时候都需要上传和下载文件,所以想开发出一个模块,用于文件的上传和下载,自然而然也就想到了网盘,因为是个人开发,本文转载自http://www.biyezuopin.vip/onews.asp?id=14721所以版本项目应该会持续迭代,优化,此外,技术栈是springboot+mybatis+jquery+bootstrap。

    1.1项目主要功能
    •用户的邮箱注册、验证码验证以及用户登录。
    •引入QQ第三方登录,为用户提供便捷的登录通道。
    •不需要注册账号,也可以上传满足条件的临时文件,但是只4小时内有效。
    •文件的管理,上传、下载、重命名、删除、查看统计数据、分类管理等。
    •文件夹的管理,创建、删除、重命名。
    •文件的分享,支持通过链接和二维码的分享方式。
    •区分普通用户和管理员的角色,管理员可以修改普通用户的使用权限和网盘容量。
    1.2技术栈
    前端
    •HTML、CSS、JavaScript、JQuery
    •BootStrap以及多个插件
    后端
    •SpringBoot + MyBatis
    •EhCache缓存
    •ThymeLeaf 模板引擎
    •腾讯QQ 第三方登录
    •Ftp工具类、二维码工具类
    部署
    •阿里云轻量应用服务器
    •Docker 环境
    •FTP 服务
    •MySQL 数据库
    1.3部署注意
    拉取项目到本地后,你需要修改一下配置信息
    •application.yml:修改数据源信息以及邮箱服务端信息
    •config.DruidConfig:修改druid登录的用户名和密码
    •utils.FtpUtil:修改FTP服务器的基本信息
    •utils.MailUtils:修改邮箱服务端发送方的邮箱
    •resources.qqconnectconfig.properties:修改app_ID 和 app_KEY和 redirect_URI

    3.项目开发
    3.1项目配置
    mybatis配置
    <configuration>
        <!--关于MyBatis的一些常用配置-->
        <settings>
            <setting name="logImpl" value="STDOUT_LOGGING" />
            <setting name="cacheEnabled" value="true"/>
            <setting name="lazyLoadingEnabled" value="true"/>
            <setting name="aggressiveLazyLoading" value="false"/>
            <setting name="mapUnderscoreToCamelCase" value="true"/>
        </settings>
        <plugins>
            <plugin interceptor="com.github.pagehelper.PageInterceptor"/>
        </plugins>
    </configuration>
    3.2接口开发
    @Mapper
    public interface FileFolderMapper {
    
        /**
         * @Description 根据文件夹的id删除文件夹
         * @Author xw
         * @Date 15:18 2020/2/26
         * @Param [fileFolderId]
         * @return java.lang.Integer
         **/
        Integer deleteFileFolderById(Integer fileFolderId);
    
        /**
         * @Description 根据父文件夹的id删除文件夹
         * @Author xw
         * @Date 15:18 2020/2/26
         * @Param [parentFolderId]
         * @return java.lang.Integer
         **/
        Integer deleteFileFolderByParentFolderId(Integer parentFolderId);
    
        /**
         * @Description 根据仓库的id删除文件夹
         * @Author xw
         * @Date 15:18 2020/2/26
         * @Param [fileStoreId]
         * @return java.lang.Integer
         **/
        Integer deleteFileFolderByFileStoreId(Integer fileStoreId);
    
        /**
         * @Description 增加文件夹
         * @Author xw
         * @Date 15:18 2020/2/26
         * @Param [fileFolder]
         * @return java.lang.Integer
         **/
        Integer addFileFolder(FileFolder fileFolder);
    
        /**
         * @Description 根据文件夹的id获取文件夹
         * @Author xw
         * @Date 15:18 2020/2/26
         * @Param [fileFolderId]
         * @return com.moti.entity.FileFolder
         **/
        FileFolder getFileFolderById(Integer fileFolderId);
    
        /**
         * @Description 根据父文件夹的id获取文件夹
         * @Author xw
         * @Date 15:18 2020/2/26
         * @Param  * @param null
         * @return
         **/
        List<FileFolder> getFileFolderByParentFolderId(Integer parentFolderId);
    
        /**
         * @Description 根据仓库的id获取文件夹
         * @Author xw
         * @Date 15:19 2020/2/26
         * @Param [fileStoreId]
         * @return java.util.List
         **/
        List<FileFolder> getFileFolderByFileStoreId(Integer fileStoreId);
        
        /**
         * @Description 获得仓库的文件夹数量
         * @Author xw
         * @Date 21:56 2020/2/10
         * @Param [fileStoreId]
         * @return java.lang.Integer
         **/
        Integer getFileFolderCountByFileStoreId(Integer fileStoreId);
    
        /**
         * @Description 根据仓库Id获得仓库根目录下的所有文件夹
         * @Author xw
         * @Date 23:49 2020/2/9
         * @Param [fileStoreId]
         * @return java.util.List
         **/
        List<FileFolder> getRootFoldersByFileStoreId(Integer fileStoreId);
    
        /**
         * @Description 根据文件夹的id修改文件夹信息
         * @Author xw
         * @Date 15:19 2020/2/26
         * @Param [fileFolder]
         * @return java.lang.Integer
         **/
        Integer updateFileFolderById(FileFolder fileFolder);
    
        /**
         * @Description 根据文件夹的id获取文件夹下面的文件
         * @Author xw
         * @Date 15:19 2020/2/26
         * @Param [fileStoreId]
         * @return java.util.List
         **/
        List<MyFile> getFileByFileFolder(Integer fileStoreId);
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    MATLAB车牌是如何精准定位的???!!!【深度好文】
    Linux常用的调试工具
    2022年6月1日启动-蓝图功能C++初级编程教学重置计划启动
    【数据结构】解密链表之旅(双链表篇)
    概论_第2章随机变量及其概率分布__离散型随机变量之二项分布
    WnvHtmlToPdf-x64-v16.0--Crack
    【源码定制】移植Youpk到Android 8.0 (Pixel2 XL)
    Threejs及TypeScript教程
    AM@第二类换元法积分
    leetcode每日一题第五十六天
  • 原文地址:https://blog.csdn.net/newlw/article/details/127132647