2019年8月31日Coding224 字约 1 分钟


文件切片上传、秒传

流程

1
2
3
4
5
6
7
8
9
10
11
12
graph TB
start(选择文件) --> chunksCalculate(计算文件切片数)
chunksCalculate --> hashCalculate{文件校验}
hashCalculate --> quickHash(快速计算)
hashCalculate --> hash(完整计算)
initUpload(创建上传请求)
quickHash --> initUpload
hash --> initUpload
initUpload --> upload(并行上传切片文件请求)
upload -- 切片全部上传完成 --> concat(合并文件切片请求)
concat --> response(返回文件信息)

Restful Api


POST 创建上传请求

Request

1
Authorization: Bearer Token
Body
1
2
3
4
5
{
size: Int, // 文件大小
chunks: Int, // 切片索引总数
hash: String // 完整文件的 hash
}

PATCH 切片上传请求

Request

Header
1
Authorization: Bearer Token
Body
1
2
3
4
5
{
file: Blob, // 切片 Blob
chunk: Int, // 当前切片索引
hash: String // 完整文件的 hash
}

PUT 合并切片请求

Request

Header
1
Authorization: Bearer Token
Body
1
2
3
4
{
chunks: Int, // 切片索引总数
hash: String // 完整文件的 hash
}

Response

Body
1
2
3
{
location: String, // 文件链接
}