Skip to content

获取上传文件授权

应用上传文件是统一存储于协作服务的,应用需通过该接口先获取协作分配的文件存储授权信息,使用该信息才可上传文件。

例如:使用发送消息接口发送图片、语音、视频、文件类消息时,需先使用此接口先将对应文件上传,获取 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)

名称类型是否必填说明
typestring文件类型
image: 图片
file: 文件
sizeinteger需要上传文件的大小,单位为 byte
image 类型最大 10M,file 类型最大 30M

请求地址示例

http
[GET] 配置域名+/o/woa/api/v2/developer/mime/upload

响应体

名称类型说明
resultinteger状态码,非 0 表示失败,参照《状态码说明》
headersobject上传文件请求 header 所需要的信息
methodobject上传请求的 http method
paramsobject上传请求的 http 参数
store_keyobject文件唯一标识,用于获取文件下载地址和发送消息
store_key_sha1object文件唯一标识校验值,用于发送消息
urlstring文件上传地址
trace_idstring请求标识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则不传该字段。

注意:

  1. 上传链接有过期时间,请在链接失效前完成文件上传请求;
  2. 上传文件的二进制数据放置到 body 中;
  3. 上传请求header不需要额外传递Content-Type,部分网络库会自动加上Content-Type,导致上传失败;
  4. 上传请求使用的url、header等值必须与接口返回的形式完全一致,部分JSON解析库会对url字符进行转义,导致上传失败;
  5. 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'