云存储是一种网上在线存储(Cloud storage),即把数据存放在通常由第三方托管的多台虚拟服务器,而非专属的服务器上。客户便可自行使用此存储资源池来存放文件或对象。
实际上,这些资源可能被分布在众多的服务器主机上。
云存储的类型
个人云存储
私有云存储
公有云存储
混合云存储
他们都在使用云存储
为什么要使用云存储
云存储已经成为未来存储发展的一种趋势。
随着5G网络推广、大数据时代下用户体验的大幅提升、云存储市场前景广阔。
通过本次项目,你将会有如下收获
接口列表
接口描述 | 接口URL |
---|---|
文件上传接口 | POST /file/upload |
文件下载接口 | GET /file/download |
文件查询接口 | GET /file/query |
文件删除接口 | POST /file/delete |
文件表设计
1 | CREATE TABLE `t_file` ( |
接口列表
接口描述 | 接口URL |
---|---|
用户查询接口 | /user/query |
用户创建接口 | /user/create |
用户编辑接口 | /user/update |
用户删除接口 | /user/${id}/delete |
登录验证接口 | /user/login |
密码重置接口 | /user/pwd/reset |
用户表设计
1 | CREATE TABLE `baidu_cloud`.`t_user` ( |
用户文件表设计
1 | CREATE TABLE `baidu_cloud`.`t_user_file` ( |
用户与文件关系设计概要
原理概述
原理概述
Http请求头Range
http请求头中的Range属性用于请求资源的部分内容,单位是byte,从0开始
如果服务器能够正常响应的话,服务器会返回 206 Partial Content
的状态码及说明
如果不能处理这种Range的话,就会返回整个资源以及响应状态码为 200 OK
例如
请求
1 | GET /test.rar HTTP/1.1 |
表示请求test.rar的头500个字节:bytes=0-499
响应
1 | 206 OK |
响应头说明
1 | Content-Range: bytes 0-10/3103 |
表示,服务器响应了前(0-10)个字节的数据,该资源一共有(3103)个字节大小
1 | Content-Length: 801 |
表示这次服务器响应了11个字节的数据(0-10)
简单实现代码
1 | File file = new File("C:\\Users\\MAX\\Desktop\\CentOS-7-x86_64-Minimal-1511.iso"); |
redis分块上传实现
前端html代码
1 | <body> |
前端js代码
1 | <script src="${pageContext.request.contextPath}/js/jquery.min.js"></script> |
1 | <script> |
后台java实现
file/info接口
1 |
|
file/info service层
1 | public boolean saveFileInfoToRedis(String fileName, |
file/patchUpload接口
1 |
|
file/patchUpload service层
1 | public boolean savePatchFileBlock(Part part,String savePath, String fileName, String fileHash, String chunkNum) { |
FileUtil工具类
1 | public class FileUtil { |