Skip to main content

功能说明

  1. 获取文件上传信息:向服务端申请上传凭证(OSS 地址 + 签名 Headers)。
  2. 上传文件到 OSS:使用第一步返回的地址和 Headers,将文件内容 PUT 到 OSS。
  3. 提交文件:通知服务端上传完成,完成文件的最终入库。
三个步骤必须按顺序执行,缺少任何一步都无法完成文件上传。

步骤一:获取文件上传信息

调用接口 POST /v2.0/storage/spaces/files/{parentDentryUuid}/uploadInfos/query,传入目标目录的parentDentryUuid(父目录唯一标识)和操作者unionId,获取本次上传所需的凭证信息。
接口请参考获取文件上传信息文档说明,如何调用请参考如何调用服务端API文档介绍。

关键入参:

  • parentDentryUuid(Path):上传目标目录的 dentryUuid。若上传到知识库根目录,可通过以下两种方式获取根目录的dentryUuid:
  • unionId(Query):操作者的 unionId,可调用查询用户详情接口获取。
  • protocol(Body):固定填 HEADER_SIGNATURE
  • option.preCheckParam.name(Body):文件名(含后缀),不能包含特殊字符(*"<>|),不能以. 结尾。

返回参数:

  • uploadKey:本次上传的唯一标识,第三步使用**。**
  • headerSignatureInfo.resourceUrls:OSS 上传地址,第二步使用。
  • headerSignatureInfo.headers:OSS 请求头,第二步使用。
  • expirationSeconds:凭证过期时间(秒),请在过期前完成后续步骤。
HTTP示例

步骤二:上传文件到 OSS

使用第一步返回的 resourceUrls[0] 作为上传地址、headers 作为请求头,通过 HTTP PUT 方法将本地文件内容直接上传到 OSS。
Content-Type 必须主动设置为空字符串,否则会导致签名校验失败。
示例代码 Java
Python
Node.js

步骤三:提交文件

OSS 上传完成后,调用接口 POST /v2.0/storage/spaces/files/{parentDentryUuid}/commit,将文件正式写入知识库目录,完成整个上传流程。

说明

  • 接口成功后会返回文件信息(dentry),包含文件 ID、uuid、所在空间等,上传完成。
  • 接口请参考提交文件文档说明,如何调用请参考如何调用服务端API文档介绍。

关键入参:

  • parentDentryUuid(Path):与第一步保持一致。
  • unionId(Query):操作者的 unionId,可调用查询用户详情接口获取。
  • uploadKey(Body):第一步返回的 uploadKey,用于关联本次上传。
  • name(Body):文件名称(含后缀)。
  • option.conflictStrategy(Body):文件名冲突策略,可选AUTO_RENAME(默认,自动重命名)/OVERWRITE(覆盖)

HTTP示例:

完整流程总结

注意事项

  • 步骤二上传时,Content-Type必须设置为空字符串,否则会导致 OSS 签名校验失败。
  • 步骤一返回的上传凭证有过期时间(expirationSeconds),请在过期前完成步骤二和步骤三,否则需要重新调用步骤一。
  • 存储空间类型为USER时,只有空间拥有者和管理者有操作权限,其他员工需要先通过「添加权限」接口授权。
  • 存储空间类型为APP时,任何人操作都需要先通过「添加权限」接口授权。