# 程序协议 ## 协议解读流程 1. 客户端通过gin获取tcp token,然后附上token连接上tcp服务器 2. 上传文件 1. 通过gin获取事务id,服务器创建事务id文件夹 2. 附带上事务id,上传文件信息; - 小文件(<1024):直接上传数据,并校验MD5 - 大文件(>1024):批量上传文件切片,校验文件数量,校验MD5。(后续需要有缺失错误文件切片补全指令) 3. 下载文件,同上 ## 文件信息协议(包含部分小文件优化) 文件相关数据信息,几相关协议长度 1. **文件信息协议** | 序号 | 名称 | 描述 | 长度byte(值) | 类型 | |----|--------|-----------------------------------------------------|-----------|--------| | 1 | 数据头 | 用于识别指令类型 | 1 | byte | | 2 | 文件事务id | 用于标记文件事务 | 16 | []byte | | 3 | 文件名长度 | 文件在指令中的长度 | 2 | uint16 | | 4 | 文件名 | 文件名 | 1~255 | []byte | | 5 | 存储路径长度 | 存储路径长度 | 2 | uint16 | | 6 | 存储路径 | 存储路径 | 1~4096 | []byte | | 7 | 文件分片长度 | 文件拆分为多少份数据进行传输,=0,在序号11中一并上传,=-1,文件夹,>0则需要使用到分片传输协议 | 4 | uint32 | | 8 | 创建时间 | time | 8 | int64 | | 9 | 修改时间 | time | 8 | int64 | | 10 | 最后访问时间 | time | 8 | int64 | | 11 | 文件内容 | 文件内容小于1024字节 | 8 | int64 | 2. **文件分片传输协议** | 序号 | 名称 | 描述 | 长度byte(值) | 类型 | |----|----------|----------|-----------|--------| | 1 | 数据头 | 用于识别指令类型 | 1 | byte | | 2 | 文件事务id | 用于标记文件事务 | 16 | []byte | | 3 | 文件分片序号 | 文件分片序号 | 4 | uint32 | | 4 | 文完整路径名长度 | 文完整路径名长度 | 4 | uint32 | | 5 | 文件分片路径 | 文件分片路径 | 1~4096 | []byte | | 6 | 文件分片内容 | 文件分片内容 | 1024 | []byte |