Skip to content

上传文件

调用该接口将本地文件上传至开放平台,支持上传音频、视频、文档等文件类型。上传后接口会返回文件的 Key,使用该 Key 值可以调用其他 OpenAPI。例如,调用发送消息接口,发送文件。

前提条件

应用需要开启机器人能力

使用限制

文件大小不得超过 30 MB,且不允许上传空文件。

请求

项目
HTTP URLhttps://open.feishu.cn/open-apis/im/v1/files
HTTP MethodPOST
接口频率限制1000 次/分钟、50 次/秒
支持的应用类型custom,isv
权限要求 调用该 API 所需的权限。开启其中任意一项权限即可调用 开启任一权限即可im:resource 获取与上传图片或文件资源 im:resource:upload 上传文件V2

请求头

名称类型必填描述
Authorizationstringtenant_access_token 值格式:"Bearer access_token" 示例值:"Bearer t-7f1bcd13fc57d46bac21793a18e560" 了解更多:如何选择与获取 access token
Content-Typestring示例值:"multipart/form-data; boundary=---7MA4YWxkTrZu0gW"

请求体

名称类型必填描述
file_typestring待上传的文件类型
示例值:"mp4"
可选值有
- opus: OPUS 音频文件。其他格式的音频文件,请转为 OPUS 格式后上传。可使用 ffmpeg 转换格式:ffmpeg -i SourceFile.mp3 -acodec libopus -ac 1 -ar 16000 TargetFile.opus - mp4: MP4 格式视频文件 - pdf: PDF 格式文件 - doc: DOC 格式文件 - xls: XLS 格式文件 - ppt: PPT 格式文件 - stream: stream 格式文件。若上传文件不属于以上枚举类型,可以使用 stream 格式
file_namestring带后缀的文件名
示例值:"测试视频.mp4"
durationint文件的时长(视频、音频),单位:毫秒。不传值时无法显示文件的具体时长。
示例值:3000
filefile文件内容,具体的传值方式可参考请求体示例。
注意:文件大小不得超过 30 MB,且不允许上传空文件。
示例值:二进制文件

请求体示例

HTTP
---7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file_type";

mp4
---7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file_name";

测试视频.mp4
---7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="duration";

3000
---7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file";
Content-Type: application/octet-stream

二进制文件
---7MA4YWxkTrZu0gW

Note 以下示例代码中需要自行替换文件路径和鉴权Token

cURL示例

curl --location --request POST 'https://open.feishu.cn/open-apis/im/v1/files' \
--header 'Authorization: Bearer t-39eec8560faa3dded7971873eb649fd40e70e0f1' \
--form 'file_type="mp4"' \
--form 'file_name="测试视频.mp4"' \
--form 'duration="3000"' \
--form 'file=@"/path/测试视频.mp4"'

HTTP示例

POST /open-apis/im/v1/files HTTP/1.1
Host: open.feishu.cn
Authorization: Bearer t-ddf4732fda4aa8a8b1639ee42e8477001d8d5f7c
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Length: 471

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file_type"

mp4
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="测试视频.mp4"
Content-Type: <Content-Type header here>

(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="duration"

3000
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file_name"

测试视频.mp4
----WebKitFormBoundary7MA4YWxkTrZu0gW

Python请求示例

import requests
from requests_toolbelt import MultipartEncoder
# 请注意使用时替换文件path和Authorization
def upload():
  url = "https://open.feishu.cn/open-apis/im/v1/files"
  form = {'file_type': 'stream',
          'file_name': 'text.txt',
          'file':  ('text.txt', open('path/text.txt', 'rb'), 'text/plain')} # 需要替换具体的path  具体的格式参考  https://www.w3school.com.cn/media/media_mimeref.asp
  multi_form = MultipartEncoder(form)
  headers = {
    'Authorization': 'Bearer xxx', ## 获取tenant_access_token, 需要替换为实际的token
  }
  headers['Content-Type'] = multi_form.content_type
  response = requests.request("POST", url, headers=headers, data=multi_form)
  print(response.headers['X-Tt-Logid']) # for debug or oncall
  print(response.content) # Print Response
# Press the green button in the gutter to run the script.

if __name__ == '__main__':
    upload()

响应

响应体

名称类型描述
codeint错误码,非 0 表示失败
msgstring错误描述
data\--
  └ file_keystring文件的 Key

响应体示例

json
{
    "code": 0,
    "msg": "success",
    "data": {
        "file_key": "file_456a92d6-c6ea-4de4-ac3f-7afcf44ac78g"
    }
}

错误码

HTTP状态码错误码描述排查建议
400232096Meta writing has stopped, please try again later.应用信息被停写,请稍后重试。
400234001Invalid request param.请求参数无效,请根据接口文档描述检查请求参数是否正确。
401234002Unauthorized.接口鉴权失败,请咨询技术支持
400234006The file size exceed the max value.资源大小超出限制。 - 文件限制:不超过 30 MB - 图片限制:不超过 10 MB
400234007App does not enable bot feature.应用没有启用机器人能力。启用方式参见如何启用机器人能力
400234010File's size can't be 0.请勿上传大小为 0 的文件。
400234041Tenant master key has been deleted, please contact the tenant administrator.租户加密密钥被删除,请联系租户管理员。
400234042Hybrid deployment tenant storage error, such as full storage space, please contact tenant administrator.请求出现混部租户存储错误,如存储空间已满等,请联系租户管理员或技术支持

更多错误码信息,参见通用错误码

内容来源:飞书开放平台 · 自动爬取整理