文件传输概述
云文档提供三种文件上传方式,可根据文件大小及上传场景,选择合适的上传接口。
上传方式概述
| 能力 | 适用场景 | 调用接口 |
|---|---|---|
| 单块上传 | 网络稳定,且非超大文件 | 1. 请求文件上传信息 2. 上传实体文件 3. 提交文件上传完成 |
| 分块上传 | 网络不稳定,或一两百兆的大文件上传 | 1. 【分块上传】初始化 2. 【分块上传】签发分块上传地址 3. 上传实体文件 4. 【分块上传】提交完成 |
| 秒传 | 存储上已有相应文件,不需再存储一份文件实体 | 1. 文件秒传 |
注意事项
1. 单块上传
- 请求文件上传信息里填入的文档size和上传文件实体接口里文件实体的size大小需要保持一致;
- 若是服务端调用上传实体文件接口,需要将文件大小塞到Content-Length。
2. 分块上传
- 目前私有化存储分块大小固定是64M,可通过环境变量自定义分块大小;
- 分块上传地址有效期为15分钟,若上传时发现地址失效,可根据分块文件的part_number重新申请该文件块及后续各块文件的上传地址;
- 分块上传时需根据文件分块的顺序和part_number一一对应上传每块文件,并记录每块文件上传成功后response header中的X-Wps3-Info-Token;
- 根据上传单块实体文件完成以后记录的X-Wps3-Info-Token,按照对应的part_number和X-Wps3-Info-Token提交分块上传完成。
3. 秒传
单块文件秒传判定:根据文件的sha256+size值判定是否秒传,若一致则认为该文件已在存储上存在,接口直接返回文件信息;
分块文件秒传判定:
a. 根据【分块上传任务初始化】获取分块文件大小;
b. 将文件按照分块大小分好以后算出每块文件的sha256;
c. 按照文件分块顺序,将hash值传入到数组(必须严格按顺序传入,否则无法判断秒传);
d. 若一致则认为该文件已在存储上存在,接口直接返回文件信息。
4. 其他
- 受存储网关限制,单块上传文件最大5TB;
- 分块上传,每块文件大小需大于5MB且小于5GB,分块数量最大一万块;
- 网关有2小时超时限制,若宽带不够,大文件上传会因为超时而失败。