获取上传文件授权
应用上传文件是统一存储于协作服务的,应用需通过该接口先获取协作分配的文件存储授权信息,使用该信息才可上传文件。
例如:使用发送消息接口发送图片、语音、视频、文件类消息时,需先使用此接口先将对应文件上传,获取 store_key、store_key_sha1,而后在调用发送消息接口时入参。
请求说明
| 请求地址 | 配置域名+/o/woa/api/v2/developer/mime/upload |
|---|---|
| 请求方法 | GET |
| 签名方式 | wps-4 |
| 支持应用类型 | 企业自建应用、第三方企业应用 |
| 权限要求 | 管理协作文件(kso.im.file.manage) |
请求头
| 名称 | 是否必填 | 说明 |
|---|---|---|
| Content-Type | 是 | 固定为: application/json |
| Wps-Docs-Date | 是 | 取当前时间, 示例: Wed, 23 Jan 2013 06:43:08 GMT |
| Wps-Docs-Authorization | 是 | 计算方法参考签名说明 |
| Authorization | 是 | 授权token,格式:Bearer ${access_token},${access_token}需替换为从授权接口获取的access_token值 |
查询参数(Query)
| 名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 文件类型 image: 图片 file: 文件 |
| size | integer | 是 | 需要上传文件的大小,单位为 byte image 类型最大 10M,file 类型最大 30M |
请求地址示例
http
[GET] 配置域名+/o/woa/api/v2/developer/mime/upload响应体
| 名称 | 类型 | 说明 |
|---|---|---|
| result | integer | 状态码,非 0 表示失败,参照《状态码说明》 |
| headers | object | 上传文件请求 header 所需要的信息 |
| method | object | 上传请求的 http method |
| params | object | 上传请求的 http 参数 |
| store_key | object | 文件唯一标识,用于获取文件下载地址和发送消息 |
| store_key_sha1 | object | 文件唯一标识校验值,用于发送消息 |
| url | string | 文件上传地址 |
| trace_id | string | 请求标识id |
响应体示例
json
{
"headers": null,
"method": "put",
"params": null,
"store_key": "DD1AFB29d29hL2Rldi9maWxlL2M5MmU2ZDU2NGE4ZmJhNmIyZGQ0Nzc2ZDQ0MjE0NmFiOndwczM6d29hOjA=",
"store_key_sha1": "05d3b081f4f4659040169416f7f75353c17259f3",
"trace_id": "14160104abf395bf7c77",
"url": "http://encs-pri-minio/woa/woa/dev/file/c92e6d564a8fba6b2dd4776d442146ab?AWSAccessKeyId=E8fpfGoKzrAhJPEP&Expires=1720000036&Signature=Lttp234Kcvp/33OC05Qu6rKT0zQdKLrU%3D"
}使用授权信息上传文件
请求成功后需要根据返回值 url、method、headers 字段发起请求,完成文件上传,若字段值为null则不传该字段。
注意:
- 上传链接有过期时间,请在链接失效前完成文件上传请求;
- 上传文件的二进制数据放置到 body 中;
- 上传请求header不需要额外传递
Content-Type,部分网络库会自动加上Content-Type,导致上传失败; - 上传请求使用的url、header等值必须与接口返回的形式完全一致,部分JSON解析库会对url字符进行转义,导致上传失败;
- 将
url域名部分替换为当前环境的域名前缀+/minio,假设当前环境域名前缀为https://www.yoursite.com,接口返回的url为http://encs-pri-minio/woa/woa/dev/file/c92e6d564a8fba6b2dd4776d442146ab,则替换后最终上传url为https://www.yoursite.com/minio/woa/woa/dev/file/c92e6d564a8fba6b2dd4776d442146ab
curl --location --request PUT 'https://{{当前私网环境域名前缀}}/minio/woa/woa/dev/file/5a289d921414812b1e5c592c84e8ad09?AWSAccessKeyId=E8fpfGoKzrAhJPEP&Expires=1720067669&Signature=a1zDyvXPj4zeP5BvySdenmGKITg%3D' \
--data-binary '@/C:/path/to/your/testfile.png'