Skip to content

分片上传

大文件分片上传,支持并发上传提高速度。

流程

分片上传需要三步:

  1. 初始化 - 获取分片任务 ID
  2. 分片上传 - 上传各个分片
  3. 查询状态 - 等待合并完成

分片初始化

基本信息

项目
方法POST
路径{globalDomain}/ous/api/v2/block/upload/init
认证ous-token-v2

Request

参数必须类型说明
md5string文件完整 MD5
blockslong总分片数
sizelong文件总大小(字节)
namestring文件名
metadatastring元数据

Example

bash
curl -X POST '{globalDomain}/ous/api/v2/block/upload/init' \
  -H 'ous-token-v2: {ousToken}' \
  -d 'md5=xxx&blocks=10&size=104857600&name=video.mp4'
python
import hashlib

# 计算文件信息
with open('video.mp4', 'rb') as f:
    file_data = f.read()
    md5 = hashlib.md5(file_data).hexdigest()
    size = len(file_data)

# 分片大小建议 5-10MB
block_size = 10 * 1024 * 1024
blocks = size // block_size + 1

response = requests.post(
    f"{globalDomain}/ous/api/v2/block/upload/init",
    headers={"ous-token-v2": ousToken},
    data={"md5": md5, "blocks": blocks, "size": size, "name": "video.mp4"}
)

Response

json
{
  "c": "0",
  "d": {
    "taskId": "block_upload_task_id"
  }
}

分片上传

基本信息

项目
方法POST
路径{globalDomain}/ous/api/v2/block/upload/part
认证ous-token-v2
Content-Typemultipart/form-data

Request

参数必须类型说明
fileMultipartFile分片文件内容
blockint分片序号(从 1 开始)

并发限制

同一文件的分片并发数建议不超过 2,超过会返回错误码 6。

Example

python
# 分片上传循环
for i in range(blocks):
    start = i * block_size
    end = min(start + block_size, size)
    chunk = file_data[start:end]
    
    files = {'file': ('chunk', chunk)}
    data = {'block': i + 1}  # 从 1 开始
    
    response = requests.post(
        f"{globalDomain}/ous/api/v2/block/upload/part",
        headers={"ous-token-v2": ousToken},
        files=files,
        data=data
    )

查询状态

分片全部上传后,轮询 查询状态 接口等待合并完成。

中止上传

如需中止分片上传:

bash
curl -X POST '{globalDomain}/ous/api/v2/block/upload/abort' \
  -H 'ous-token-v2: {ousToken}'