项目介绍
- 云备份服务器能够通过浏览器将文件上传到服务器上。
- 并且随时可以通过浏览器进行查看并且下载,其中下载的过程支持断点续传。
- 服务器上有热点管理模块,将非热点文件进行压缩存储,节省服务器的磁盘空间。
服务器各个模块的功能介绍
配置文件管理模块
- 管理配置文件,当服务器启动的时候,将配置文件中配置的信息加载到服务器中,包括热点的时间,压缩文件的后缀,服务器的端口号等等.
文件信息管理模块
- 管理上传的文件的信息,当服务器启动的时候,将备份文件信息加载到服务器上。
- 备份文件信息备份目录和压缩目录下的的文件信息,文件信息包括文件的备份路径,压缩路径,压缩标志,文件的大小,url等等
热点管理模块
- 不断轮询查看备份目录下的文件,如果备份目录下有文件是非热点文件,则对该文件进行压缩,并将将压缩文件放在压缩目录下,并删除备份目录下的文件,再将文件信息中的压缩标志设置为true,表示该文件已经被压缩。
通信管理模块
1.. 当浏览器发送一个get /listshow/ http/1.1请求时,服务器会給浏览器一个html页面,用户可以在这个页面上下载想要的文件,或者上传文件到服务器上.
2. 当客户端发送一个 get /download/文件名 http1.1的请求給服务器时,表示时下载文件。
- 首先服务器会去文件信息管理模块中查找该文件是否存在。
- 如果存在,则需要判断该文件是否被压缩,如果没有被压缩则直接将备份目录下的文件发送給浏览器。
- 如果该文件被压缩,则将压缩目录下的压缩文件解压缩放到备份目录,删除压缩文件,将文件信息的压缩标志设置为false,表示该文件没有被压缩。
- 在下载过程中,如果因为某种原因导致下载中断,则重新下载则会从上次中断的位置开始下载,不会重新下载该文件。
文件下载过程:
3.当客户端发送一个 post /updown http/1.1的请求时,表示上传文件給服务器,文件名和文件内容存放在http请求中的正文中。服务器收到该请求后,读取http请求中的文件名和文件数据,在备份目录下创建一个新的文件,并将该文件的数据放在这个新的文件中,添加新的文件信息到文件信息管理系统。
上传功能:
上传文件后,热点时间过后,则上传的文件会从backdir中压缩到packdir下面。
项目设计
- 环境搭建
- httplib库的使用
- bundle库的使用
- jsoncpp库的使用和json字符串的概念
- 配置文件模块的设计
- 文件信息管理模块的设计
- 热点模块的设计
- 通信管理模块设计
github链接: https://github.com/sjp1237/cloudserver