上传文件
你的服务端可以上传消息附件、用户头像、群头像、聊天室封面和群文件,例如以系统账号发送图片通知、导入用户时设置头像、向群文件中放入资料。上传分三步:创建上传得到上传地址,直接向对象存储上传文件内容,再完成上传得到文件地址。用途、大小上限、格式和保留规则见文件概述。本页先给出两个完整的示例,再逐个说明各接口。
不超过 32 MB 的文件单次上传:创建上传时返回一个上传地址,一次 PUT 写入。超过 32 MB 的文件分片上传:每 16 MB 一片,先索取分片上传地址再逐片上传,中断后可以查询已上传的分片从断点继续。
客户端上传
用户在客户端上传时,由客户端用 User Token 调用与本页相同的接口,路径前缀为 /client/v1/media(如 POST /client/v1/media/uploads),流程和参数相同,只是不能指定 owner(所属用户就是上传者本人),按用户限制频率,上传群文件还要求是群成员。SDK 发布后由 SDK 封装,客户端发送图片消息、更换头像不需要经过你的服务端。
上传图片并发送消息
以 alice 的身份给 bob 发送一张图片。
1. 创建上传。 图片 photo.jpg 的大小为 269867 字节:
curl -X POST "$IM_API/$ORG/$APP/media/uploads" \
-H "Authorization: Bearer $APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"purpose": "attachment",
"kind": "image",
"size": 269867,
"content_type": "image/jpeg",
"name": "photo.jpg"
}'{
"file_id": "99606093402996736",
"upload_method": "single",
"upload": {
"url": "https://storage.example.com/im-private/staging/t99604914749046784/a99604957103128576/99606093402996736?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=...&X-Amz-Date=20261002T203903Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=content-length%3Bhost&X-Amz-Signature=a5900ffd...",
"method": "PUT",
"headers": { "Content-Length": "269867" }
},
"part_size": null,
"part_count": 0,
"expires_at": "2026-10-02T21:39:03.259Z"
}2. 上传文件内容。 用返回的 upload.method 请求 upload.url,请求体为文件内容。curl --upload-file 会自动带上 Content-Length:
curl -X PUT "https://storage.example.com/im-private/staging/t99604914749046784/a99604957103128576/99606093402996736?X-Amz-Algorithm=AWS4-HMAC-SHA256&...&X-Amz-Signature=a5900ffd..." \
--upload-file photo.jpg对象存储返回 200 OK,没有响应体。
3. 完成上传。
curl -X POST "$IM_API/$ORG/$APP/media/uploads/99606093402996736/complete" \
-H "Authorization: Bearer $APP_TOKEN"返回文件对象。图片去掉了拍摄信息等元数据,size 比原文件略小:
{
"file_id": "99606093402996736",
"purpose": "attachment",
"kind": "image",
"status": "active",
"url": "https://im.example.com/media/v1/f/99606093402996736/DC0neNm6HBbxGW9bN6g_iA",
"thumbnail_url": "https://im.example.com/media/v1/f/99606093402996736/DC0neNm6HBbxGW9bN6g_iA/thumb",
"name": "photo.jpg",
"content_type": "image/jpeg",
"size": 269803,
"width": 1080,
"height": 720,
"owner": null,
"group_id": null,
"via": "openapi",
"created_at": "2026-10-02T20:39:03.259Z",
"expires_at": "2026-11-01T20:39:03.259Z",
"in_use": false,
"sha256": "6c458b05f583eca6c08cd7296ec4d2811c68cf59cbc3c8b30feeb8cdc45994ef",
"created_by": "99604957107322880",
"blocked_at": null,
"blocked_by": null,
"block_rule_source": null,
"block_reason": null,
"deleted_at": null,
"delete_reason": null
}4. 发送图片消息。 把文件对象中的 url、thumbnail_url、width、height、size 写进图片消息的 body,format 按 content_type 填写。图片消息的 body 中只有 url 是必填的,其他字段用于客户端在下载之前排版和显示,建议都填上。各类型消息的 body 见消息类型,发送接口见发送消息:
curl -X POST "$IM_API/$ORG/$APP/messages" \
-H "Authorization: Bearer $APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"from": "alice",
"to_user": "bob",
"client_msg_id": "img-0001",
"type": "image",
"body": {
"url": "https://im.example.com/media/v1/f/99606093402996736/DC0neNm6HBbxGW9bN6g_iA",
"thumbnail_url": "https://im.example.com/media/v1/f/99606093402996736/DC0neNm6HBbxGW9bN6g_iA/thumb",
"width": 1080,
"height": 720,
"size": 269803,
"format": "jpg"
}
}'bob 的客户端收到消息后,用 User Token 换取缩略图和原图的下载地址后显示,见文件地址。
- 消息中要写文件地址,不要写换取得到的下载地址:下载地址最长 90 分钟后失效。
- 同一个文件可以发到多个会话中,不需要重复上传。附件从上传时起按
attachment_retention_days(默认 30 天)保留,到期后消息仍在,下载时提示文件已过期。 - 文件消息(
type为file)的body中name也是必填的,通常填上传时的文件名;语音和视频消息还要填duration_seconds,服务端不解析音视频,由你填写时长。视频的封面请另外作为图片上传,填写它的地址。
为用户设置头像
用户头像要先上传,再用得到的公开地址修改用户资料。上传时必须用 owner 指定使用这个头像的用户,所以导入用户时先创建用户(不带头像),再上传头像,最后修改资料。
1. 创建上传,用途为 user_avatar:
curl -X POST "$IM_API/$ORG/$APP/media/uploads" \
-H "Authorization: Bearer $APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"purpose": "user_avatar",
"kind": "image",
"size": 43484,
"content_type": "image/jpeg",
"owner": "carol"
}'2. 上传文件内容,与上例相同:
curl -X PUT "<upload.url>" --upload-file avatar.jpg3. 完成上传,得到头像的公开地址。1200 × 1200 像素的原图被缩放为 640 × 640:
curl -X POST "$IM_API/$ORG/$APP/media/uploads/99606376459796480/complete" \
-H "Authorization: Bearer $APP_TOKEN"{
"file_id": "99606376459796480",
"purpose": "user_avatar",
"kind": "image",
"status": "active",
"url": "https://cdn.example.com/t99604914749046784/a99604957103128576/u/99606376459796480_thhts5lb.jpg",
"thumbnail_url": null,
"name": null,
"content_type": "image/jpeg",
"size": 14083,
"width": 640,
"height": 640,
"owner": "carol",
"group_id": null,
"via": "openapi",
"created_at": "2026-10-02T20:40:10.745Z",
"expires_at": null,
"in_use": false,
"sha256": "2c1638f06c486e40ad416456ccd8dd3cae5d34d6c2e6350b87fbcf421d3a66b5",
"created_by": "99604957107322880",
"blocked_at": null,
"blocked_by": null,
"block_rule_source": null,
"block_reason": null,
"deleted_at": null,
"delete_reason": null
}4. 修改用户资料,见修改用户资料:
curl -X PATCH "$IM_API/$ORG/$APP/users/carol" \
-H "Authorization: Bearer $APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"avatar_url": "https://cdn.example.com/t99604914749046784/a99604957103128576/u/99606376459796480_thhts5lb.jpg"
}'修改后片刻,查询文件可以看到这个头像的 in_use 变为 true。
- 上传后 24 小时内没有设置到资料中的头像会被自动删除;
- 之后再更换头像,原来的头像在 7 天后删除,不需要你处理;
- 用户头像只能用于
owner本人的资料,设置给其他用户不算使用,到期同样会被删除; - 群头像的流程相同:用途为
group_avatar,不需要owner,完成后用公开地址修改群资料的avatar_url; - 聊天室封面的流程也相同:用途为
chatroom_avatar,不需要owner,完成后用公开地址创建聊天室或修改聊天室资料的avatar_url。聊天室解散 7 天后,封面被删除。
创建上传
声明要上传的文件,得到文件 ID 和上传地址。服务端检查用途和类型的组合、大小上限和应用的存储额度,不检查文件的内容:内容在完成上传时检查。每次调用都创建一个新的上传,不去重;没有完成的上传到期后自动删除,不计入存储用量。
你的服务端上传群文件时只检查群存在且没有解散,不检查 owner 是否为群成员,不受运行策略 group_file_enabled 和群封禁的限制。应用处于只读状态时不能创建上传,但已经创建的上传仍可以完成。
/{org_name}/{app_name}/media/uploads路径参数
org_name、app_name 见接入概述。
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
purpose | String | 是 | 用途:attachment 消息附件 / user_avatar 用户头像 / group_avatar 群头像 / chatroom_avatar 聊天室封面 / group_file 群文件,见文件的用途 |
kind | String | 是 | 类型:image、voice、video、file。消息附件可以是全部四种,头像和聊天室封面只能是 image,群文件可以是 image、video、file。完成上传时按文件内容检查格式是否符合类型,见格式检查与图片处理 |
size | Number | 是 | 文件大小,字节,大于 0。上传的内容必须恰好是这么多字节。上限:消息附件和群文件为运行策略 max_upload_bytes(默认 100 MB),其中图片不超过 20 MB、语音不超过 5 MB(max_upload_bytes 更小时取它);头像和聊天室封面为 5 MB |
content_type | String | 否 | 文件的格式(MIME 类型),如 image/jpeg,最长 128 个字符。只作参考,格式以完成上传时按文件内容识别出的为准 |
name | String | 视情况 | 文件名,最长 255 个字符,规则与文件消息的 name 相同。类型为 file 的文件和群文件必填,其他可选。下载 file 类型的文件和群文件时作为保存的文件名 |
group_id | String | 群文件必填 | 群 ID。只有群文件可以带,群必须存在且没有解散 |
owner | String | 用户头像必填 | 所属用户的用户名,用户必须存在。用户头像为使用这个头像的用户,只有他的资料能使用它;其他用途可选,用于记录文件属于哪个用户,例如代用户上传的附件。应用开启了删除用户时擦除消息(erase_messages_on_user_delete)的,删除这个用户时他的附件和群文件随之删除 |
请求示例
上传一个 35 MB 的视频(超过 32 MB,分片上传):
curl -X POST "$IM_API/$ORG/$APP/media/uploads" \
-H "Authorization: Bearer $APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"purpose": "attachment",
"kind": "video",
"size": 36712345,
"content_type": "video/mp4",
"name": "发布会.mp4"
}'向群文件中上传一份 PDF,记为 bob 上传的:
curl -X POST "$IM_API/$ORG/$APP/media/uploads" \
-H "Authorization: Bearer $APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"purpose": "group_file",
"kind": "file",
"size": 3145728,
"name": "Q3 需求评审.pdf",
"group_id": "99606031272771584",
"owner": "bob"
}'响应
成功返回 201 Created:
| 字段 | 类型 | 说明 |
|---|---|---|
file_id | String | 文件 ID,之后的上传接口和文件接口都用它 |
upload_method | String | 上传方式:single 单次上传,按 upload 一次上传全部内容;multipart 分片上传,按 part_size 分片后逐片上传。由服务端按 size 决定,超过 32 MB 的为 multipart |
upload | Object | 单次上传的上传地址,分片上传为 null。用法见上传文件内容 |
upload.url | String | 上传地址,1 小时内有效 |
upload.method | String | 请求方法,固定为 PUT |
upload.headers | Object | 上传时必须带的请求头,目前为 Content-Length,值与 size 相同 |
part_size | Number | 分片上传时每片的大小,固定为 16777216(16 MB),最后一片为剩余的部分;单次上传为 null |
part_count | Number | 分片数,即 size 除以 16 MB 向上取整;单次上传为 0 |
expires_at | String | 上传的有效期:单次上传为 1 小时后,分片上传为 24 小时后。到期仍未完成的上传自动作废 |
分片上传的响应:
{
"file_id": "99606786000027648",
"upload_method": "multipart",
"upload": null,
"part_size": 16777216,
"part_count": 3,
"expires_at": "2026-10-03T20:41:48.387Z"
}单次上传的响应见上传图片并发送消息。
错误
| HTTP 状态码 | code | 说明 |
|---|---|---|
| 400 | invalid_argument | details.reason 为 invalid_purpose:用途不正确,或用途与类型的组合不允许 |
| 400 | invalid_argument | details.reason 为 invalid_name:类型为 file 的文件或群文件没有给出 name,或文件名不符合规则 |
| 400 | invalid_argument | 不带 details:size 不大于 0;content_type 超过 128 个字符;群文件没有 group_id,或其他用途带了 group_id;用户头像没有 owner。message 说明了原因 |
| 403 | app_unavailable | 应用处于只读状态,不能上传,见限流与应用状态 |
| 404 | not_found | owner 指定的用户不存在或已删除(“用户不存在”);群不存在或已解散(“群不存在或已解散”) |
| 409 | limit_exceeded | details.reason 为 storage_quota:应用的存储额度已满,另带 limit_bytes、used_bytes,见存储用量与额度;details.reason 为 group_file_limit:这个群的群文件已满 1000 个 |
| 413 | payload_too_large | size 超过这种用途和类型的大小上限,details.max_bytes 为上限的字节数 |
{
"error": {
"code": "payload_too_large",
"message": "文件超过大小上限",
"details": { "max_bytes": 20971520 },
"request_id": "VRKDMUL77JAZIGGSWDSE5V7GBE"
}
}上传文件内容
文件内容直接上传到对象存储,不经过 IM 服务的接口。上传地址已经带有签名,请求时不要带 Authorization 请求头。
- 单次上传:用
upload.method(PUT)请求upload.url,带上upload.headers中的全部请求头,请求体为文件的全部内容。 - 分片上传:对每一片,用索取分片上传地址返回的
method、url和headers上传这一片的内容。第 N 片是文件中从第 (N − 1) × 16 MB 个字节开始的 16 MB,最后一片为剩余的部分。各片可以并行、按任意顺序上传。
注意:
- 请求必须带
Content-Length,且与签名中的长度(size或这一片的大小)完全相同。长度不同时对象存储返回403(SignatureDoesNotMatch);不能使用分块传输编码(Transfer-Encoding: chunked),否则返回411。多数 HTTP 库按文件或字节数组上传时会自动设置Content-Length。 Content-Type请求头不检查,可以不带,格式以完成上传时识别的为准。- 上传成功时对象存储返回
200 OK;失败时返回对象存储自己的 XML 格式的错误,不是本服务的错误结构。 - 上传地址在有效期内可以重复使用:网络中断或上传失败时,用同一个地址重新上传即可,以最后一次成功上传的内容为准。上传地址过期后,单次上传要重新创建上传;分片上传可以重新索取这一片的地址。
curl -X PUT "https://storage.example.com/im-private/t99604914749046784/a99604957103128576/m/99606786000027648?X-Amz-Algorithm=AWS4-HMAC-SHA256&...&partNumber=1&uploadId=ZTBmOTBh...&X-Amz-Signature=b665663e..." \
--upload-file part1.bin索取分片上传地址
为分片上传的若干片签发上传地址,一次最多 100 片。可以一次索取全部分片,也可以边上传边索取;地址过期后重新索取即可,已经上传的分片不受影响。只能用于 upload_method 为 multipart 的上传。
/{org_name}/{app_name}/media/uploads/{file_id}/parts路径参数
org_name、app_name 见接入概述。
| 参数 | 类型 | 说明 |
|---|---|---|
file_id | String | 创建上传时返回的文件 ID |
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
part_numbers | Array<Number> | 是 | 片号,从 1 开始,1 到 part_count 之间,一次 1 到 100 个,不能重复 |
请求示例
curl -X POST "$IM_API/$ORG/$APP/media/uploads/99606786000027648/parts" \
-H "Authorization: Bearer $APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"part_numbers": [1, 2, 3]
}'响应
成功返回 200 OK:
| 字段 | 类型 | 说明 |
|---|---|---|
parts | Array<Object> | 各片的上传地址,按请求中的顺序 |
parts[].part_number | Number | 片号 |
parts[].url | String | 这一片的上传地址 |
parts[].method | String | 请求方法,固定为 PUT |
parts[].headers | Object | 上传这一片时必须带的请求头,目前为 Content-Length,即这一片的大小 |
parts[].expires_at | String | 地址的有效期:1 小时后,但不晚于上传的有效期 |
{
"parts": [
{
"part_number": 1,
"url": "https://storage.example.com/im-private/t99604914749046784/a99604957103128576/m/99606786000027648?X-Amz-Algorithm=AWS4-HMAC-SHA256&...&partNumber=1&uploadId=ZTBmOTBh...&X-Amz-Signature=b665663e...",
"method": "PUT",
"headers": { "Content-Length": "16777216" },
"expires_at": "2026-10-02T21:41:53.960Z"
},
{
"part_number": 2,
"url": "https://storage.example.com/im-private/t99604914749046784/a99604957103128576/m/99606786000027648?X-Amz-Algorithm=AWS4-HMAC-SHA256&...&partNumber=2&uploadId=ZTBmOTBh...&X-Amz-Signature=8e08a1ca...",
"method": "PUT",
"headers": { "Content-Length": "16777216" },
"expires_at": "2026-10-02T21:41:53.960Z"
},
{
"part_number": 3,
"url": "https://storage.example.com/im-private/t99604914749046784/a99604957103128576/m/99606786000027648?X-Amz-Algorithm=AWS4-HMAC-SHA256&...&partNumber=3&uploadId=ZTBmOTBh...&X-Amz-Signature=ec6fd43f...",
"method": "PUT",
"headers": { "Content-Length": "3157913" },
"expires_at": "2026-10-02T21:41:53.960Z"
}
]
}错误
| HTTP 状态码 | code | 说明 |
|---|---|---|
| 400 | invalid_argument | part_numbers 为空、超过 100 个、超出 1 到 part_count 的范围或有重复;或者这次上传是单次上传,没有分片 |
| 404 | not_found | 上传不存在、已取消或已过期,或者不是通过本应用的 OpenAPI 创建的 |
| 409 | version_conflict | 上传已经完成,details.reason 为 upload_completed |
查询已上传的分片
返回分片上传中已经上传成功的分片,按片号升序一次返回全部。上传中断后,用它找出缺少的分片,只补传这些分片,再完成上传。只能用于分片上传。
/{org_name}/{app_name}/media/uploads/{file_id}/parts路径参数
org_name、app_name 见接入概述。
| 参数 | 类型 | 说明 |
|---|---|---|
file_id | String | 创建上传时返回的文件 ID |
请求示例
curl "$IM_API/$ORG/$APP/media/uploads/99606786000027648/parts" \
-H "Authorization: Bearer $APP_TOKEN"响应
成功返回 200 OK:
| 字段 | 类型 | 说明 |
|---|---|---|
parts | Array<Object> | 已上传的分片,按片号升序;还没有上传任何分片时为空数组 |
parts[].part_number | Number | 片号 |
parts[].size | Number | 这一片已上传的大小,字节。除最后一片外应为 16777216,不等时请重新上传这一片 |
上传了第 1、3 片,缺少第 2 片:
{
"parts": [
{ "part_number": 1, "size": 16777216 },
{ "part_number": 3, "size": 3157913 }
]
}错误
| HTTP 状态码 | code | 说明 |
|---|---|---|
| 400 | invalid_argument | 这次上传是单次上传,没有分片 |
| 404 | not_found | 上传不存在、已取消或已过期,或者不是通过本应用的 OpenAPI 创建的 |
| 409 | version_conflict | 上传已经完成,details.reason 为 upload_completed |
完成上传
内容上传完之后调用,没有请求体;分片上传也不需要提交分片列表,服务端自行核对已上传的分片。服务端核对大小、按文件内容识别格式,处理图片和头像(见格式检查与图片处理),通过后文件变为可用,返回文件对象。
- 可以重试:已经完成的上传再次调用,返回
200 OK和第一次的结果。一次完成请求最多处理 2 分钟,超时返回500 internal,上传仍然有效,稍后重试即可。前一个完成请求还在处理时返回409 version_conflict(upload_completing),稍后重试。 - 失败后能否重试:内容还没有上传完(
upload_incomplete)、处理繁忙(image_busy)、核对过程中内容被重新上传(upload_changed)等情况,上传仍然有效,补传内容或稍后再次完成即可。格式不符合类型、图片无法处理、群文件已满、所属用户已删除、群已解散的,这次上传随即作废,要重新创建上传;之后再调用完成返回400 invalid_argument(upload_failed)。 - 完成之后:上传地址仍可以使用到过期,但再次上传的内容不会改变已经完成的文件。
/{org_name}/{app_name}/media/uploads/{file_id}/complete路径参数
org_name、app_name 见接入概述。
| 参数 | 类型 | 说明 |
|---|---|---|
file_id | String | 创建上传时返回的文件 ID |
请求示例
curl -X POST "$IM_API/$ORG/$APP/media/uploads/99606786000027648/complete" \
-H "Authorization: Bearer $APP_TOKEN"响应
成功返回 200 OK,响应体为文件对象。以上文分片上传的视频为例(视频没有缩略图和宽高,也不计算 sha256):
{
"file_id": "99606786000027648",
"purpose": "attachment",
"kind": "video",
"status": "active",
"url": "https://im.example.com/media/v1/f/99606786000027648/AIqdvqpQk8b2JOVXzRFOfA",
"thumbnail_url": null,
"name": "发布会.mp4",
"content_type": "video/mp4",
"size": 36712345,
"width": null,
"height": null,
"owner": null,
"group_id": null,
"via": "openapi",
"created_at": "2026-10-02T20:41:48.396Z",
"expires_at": "2026-11-01T20:41:48.396Z",
"in_use": false,
"sha256": null,
"created_by": "99604957107322880",
"blocked_at": null,
"blocked_by": null,
"block_rule_source": null,
"block_reason": null,
"deleted_at": null,
"delete_reason": null
}错误
| HTTP 状态码 | code | 说明 |
|---|---|---|
| 400 | invalid_argument | details.reason 为 upload_incomplete:单次上传还没有上传内容(“文件还没有上传”),或分片上传缺少分片、某一片的大小不对(“分片不全或大小不对”)。上传仍然有效,补传后再次完成 |
| 400 | invalid_argument | details.reason 为 size_mismatch:上传的大小与 size 不同,details.size 为实际的大小。上传仍然有效,重新上传后再次完成 |
| 400 | invalid_argument | details.reason 为 unsupported_type:文件的格式不符合类型,details.content_type 为识别出的格式。这次上传作废 |
| 400 | invalid_argument | details.reason 为 image_too_large:图片超过 5000 万像素;invalid_image:图片无法解码。这次上传作废 |
| 400 | invalid_argument | details.reason 为 upload_failed:这次上传已经因为上述原因作废,请重新创建上传 |
| 403 | file_blocked | 文件已完成上传,之后因违规被屏蔽 |
| 404 | not_found | 上传不存在、已取消或已过期,或者不是通过本应用的 OpenAPI 创建的(“上传不存在、已取消或已过期”);owner 指定的用户在上传期间被删除(“用户不存在”);群文件所在的群在上传期间解散(“群不存在或已解散”)。后两种情况这次上传作废 |
| 409 | version_conflict | details.reason 为 upload_completing:另一个完成请求正在处理这个文件;upload_changed:核对的过程中内容被重新上传了。都可以稍后再次完成 |
| 409 | limit_exceeded | details.reason 为 group_file_limit:群文件已满 1000 个。这次上传作废 |
| 429 | rate_limited | details.reason 为 image_busy:图片处理繁忙,按 Retry-After 等待后再次完成 |
| 500 | internal | 处理超时(“完成上传超时,请稍后重试”)等内部错误,上传仍然有效,稍后重试 |
{
"error": {
"code": "invalid_argument",
"message": "文件的格式不符合类型",
"details": { "content_type": "text/plain", "reason": "unsupported_type" },
"request_id": "BN22NWAAYNNI3ERPKAWSHIBRPH"
}
}取消上传
放弃一次还没有完成的上传,已上传的内容随后删除。已经取消、过期或作废的上传再次取消也返回成功。已经完成的上传不能取消,要删除文件请用删除文件。
/{org_name}/{app_name}/media/uploads/{file_id}路径参数
org_name、app_name 见接入概述。
| 参数 | 类型 | 说明 |
|---|---|---|
file_id | String | 创建上传时返回的文件 ID |
请求示例
curl -X DELETE "$IM_API/$ORG/$APP/media/uploads/99606941961027584" \
-H "Authorization: Bearer $APP_TOKEN"响应
成功返回 204 No Content,没有响应体。
错误
| HTTP 状态码 | code | 说明 |
|---|---|---|
| 404 | not_found | 上传不存在,或者不是通过本应用的 OpenAPI 创建的 |
| 409 | version_conflict | 上传已经完成,details.reason 为 upload_completed |
