# 合并分片完成上传

> 提交各分片的 ETag,合并为一个文件,拿到可下载地址 DownloadUrl。

POST
  `https://ikho.cn/developer/api/open/partner/files/upload/complete-upload`
  [试一试](/docs/embedded/playground/)

  
## 鉴权

  

  
    `Authorization`
    string
    header
    必填
    
  

  `Bearer` 加上用户访问令牌。

  

  

  
    `Content-Type`
    string
    header
    必填
    默认 `application/json`
  

  请求内容类型。

  

  
## 请求体

  

  
    `file_id`
    string
    
    必填
    
  

  生成预签名地址时返回的 `FileId`。

  

  

  
    `upload_id`
    string
    
    必填
    
  

  生成预签名地址时返回的 `UploadId`。

  

  

  
    `part_list`
    array
    
    必填
    
  

  各分片的序号与 `ETag`,来自每次 `PUT` 的响应头。

  子属性
    

  
    `PartNumber`
    integer
    
    
    
  

  分片序号,从 1 开始。

  

    

  
    `ETag`
    string
    
    
    
  

  该分片 `PUT` 到存储后响应头返回的 `ETag`。

  

  

  
    `filetype`
    string
    
    必填
    
  

  音频文件扩展名。

  

  

  
    `file_md5`
    string
    
    
    
  

  整个文件的十六进制 MD5。可选;内测期服务端忽略此字段,不做完整性校验。

  

  
## 响应

  

  
    `FileId`
    string
    
    
    
  

  已上传文件的标识。

  

  

  
    `FileType`
    string
    
    
    
  

  音频文件扩展名。

  

  

  
    `DownloadUrl`
    string
    
    
    
  

  合并后文件的本平台下载端点,凭用户令牌 `GET` 读取。作为 `file_url` 交给转写 API。

  

  

  cURLPython
  

  

  bash
    
  

  
```
curl -X POST "https://ikho.cn/developer/api/open/partner/files/upload/complete-upload" \
  -H "Authorization: Bearer $USER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "file_id": "file_9f3c1a",
    "upload_id": "upload_7b2e5d",
    "part_list": [
      { "PartNumber": 1, "ETag": "a1b2c3d4e5f6" },
      { "PartNumber": 2, "ETag": "7g8h9i0j1k2l" }
    ],
    "filetype": "mp3",
    "file_md5": "9e107d9d372bb6826bd81d3542a419d6"
  }'
```

  ts
    
  

  
```
import requests

resp = requests.post(
    "https://ikho.cn/developer/api/open/partner/files/upload/complete-upload",
    headers={
        "Authorization": "Bearer " + user_token,
        "Content-Type": "application/json",
    },
    json={
        "file_id": "file_9f3c1a",
        "upload_id": "upload_7b2e5d",
        "part_list": [
            {"PartNumber": 1, "ETag": "a1b2c3d4e5f6"},
            {"PartNumber": 2, "ETag": "7g8h9i0j1k2l"},
        ],
        "filetype": "mp3",
        "file_md5": "9e107d9d372bb6826bd81d3542a419d6",
    },
)
print(resp.json()["DownloadUrl"])
```

  

  200 响应示例
    
  

  
```
{
  "FileId": "file_9f3c1a",
  "FileType": "mp3",
  "DownloadUrl": "https://ikho.cn/developer/api/open/partner/files/file_9f3c1a/content"
}
```
