基于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<com.moti.entity.FileFolder>**/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<com.molihub.entity.FileFolder>**/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<com.moti.entity.MyFile>**/List<MyFile> getFileByFileFolder(Integer fileStoreId);}
基于springboot和ftp实现的网盘文件系统相关推荐
- ecs服务器配置git_基于ECS和NAS搭建个人网盘
场景介绍 本文为您介绍如何快速搭建一个基于ECS和NAS的私有网盘. 背景知识 本场景主要涉及以下云产品和服务: 云服务器ECS 云服务器(Elastic Compute Service,简称ECS) ...
- 基于ECS和NAS搭建个人网盘
基于ECS和NAS搭建个人网盘 阿里云高校学生计划 基于ECS和NAS搭建个人网盘 场景体验目标 背景知识 实验详情 1 连接ECS服务器 2 安装 OwnCloud 3 安装 Apache 服务 4 ...
- 基于spring boot开发的个人网盘
文章目录 前言 一.项目现阶段部分效果演示 二.项目数据库部分表设计 2.1. 创建user表.file表.logs表等sql语句 2.2 FileMapper.xml和FileMapper接口 三. ...
- 【阿里云ECS进阶训练营】day07基于ECS和NAS搭建个人网盘
目录 一:背景知识 二:实验步骤 1.连接ECS服务器 2.安装OwnCloud 3.安装Apache服务 4.安装并配置PHP 5.配置OwnCloud 6.挂载NAS服务 一:背景知识 云服务器E ...
- 基于golang做一个简易私有网盘
服务器端代码main.go package main import ( "io" "net/http" "os" "fmt&quo ...
- 搭建基于springboot的FTP服务器
引言 最近有一个在集成系统上提供1G以上文件下载的功能,还要提供文件的展示功能和删除的操作,因为常规的文件流速度慢并且容易断掉因此我们采用FTP的方式,系统架构如下图所示,这里我们采用的ftp框架是a ...
- 基于owncloud构建私有云储存网盘
注意事项:需要ping通外网 需要LAMP架构 yum -y install httpd php php-mysql mariadb-server mariadb sqlite php-dom php ...
- 基于springboot+layui的简易门户网、发布后台
空闲时间做了个门户网+发布后台,两者是分离的.以前看这类应用都是,后台发布后要生成门户的静态网页,另外对于页头.页脚这些通用部分,用的比较多的是shtml文件(需要ssi支持).而自己一直是做信息化系 ...
- 基于Go语言的网盘开发(GloudDisk)
(记录一下自己做项目的过程) 基于go-zero实现的简易的网盘系统,如果有小伙伴对这个项目感兴趣,可以去网上搜索一些资料.这里推荐一下我学习的来源:[项目实战]基于Go-zero.Xorm的网盘系统 ...
最新文章
- 使用SSH和Nginx做内网HTTP映射
- java urlconn 下载慢_使用HttpURLConnection下载文件时出现 
java.io.FileNotFoundException彻底解决办法...
- Python解释器种类以及特点
- 自信的真正含义--NLP
- GIS投影的基本原理、超图数据集导入导出坐标系文件
- C语言连接MYSQL存取数据的一个例子
- 工作几年的感想(一)
- [李景山php]每天TP5-20170111|thinkphp5-Model.php-4
- 计算机程序的构造和解释 python_SICP Python 描述 第三章 计算机程序的构造和解释 3.1 引言...
- android tv ko,Android TV 键值修改流程
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器(及Windows 10无法找到SQL server配置管理器的解决方法)
- 怎样防止服务器被攻击 常见的服务器攻击方式有哪些
- Androidstudio连接华为手机问题
- python 列表解析式
- 如何提高自身代码能力
- 物流学哪方面计算机知识,物流说丨物流专业的毕业生应该具备的6大技能
- python动态规划爬楼梯_Python走楼梯问题解决方法示例
- Linux、Qt等安装镜像下载--清华大学开源软件镜像站
- 集成友盟的意见反馈功能
- Linux中更改文件显示只读不可写
热门文章
- linux 虚拟机mac配置网络,Macbook中VMWare的Centos7虚拟机上网配置
- minecraft java版多少钱_Java版版本记录
- 游戏编程 - 从Godot引擎中的lerp(...)函数到线性插值
- 在DB2中创建第一个触发器
- 相对定位(relative),绝对定位(absolute),固定定位(fixed)
- 微星970A-G43 主板 PCIE转NVME固态硬盘做WIN10启动盘,解决方案
- java报错意外的类型_Java意外类型错误
- 企业级负载均衡解决方案之八:腾讯云负载均衡解决方案CLB
- 移远EC200U-CN 4G Cat1 模组 TCP收发数据和GPS使用流程
- 果真这么难学?谁再说mysql难学,我一张思维导图就扔过去!