跳转至

文件(FileController)

提供 KMS 知识管理模块文件域的核心能力:文件详情查询、目录列表、回收站、文件移动/重命名/删除、内/外部分享、收藏、预览(含水印)、标签(贴/取/删)、批量操作、模板与归档文件创建等。本控制器是 kms 模块端点最多的控制器,所有端点均返回 JSON 资源。

  • 接口类型:REST 资源(@RestController,类级与所有方法级 produces = MediaType.APPLICATION_JSON_VALUE
  • 基址${myapps.context-path.kms:}/api/kms ${myapps.context-path.kms:}/kms(类级 @RequestMapping 同时声明两个前缀,同一端点可经任一前缀访问;下文示例统一采用 /api/kms
  • Tag:kms文件模块

公共说明

  • 鉴权(据源码 KmsMvcConfig + KmsSecurityFilterKmsMvcConfig 注册全局 Servlet 过滤器 KmsSecurityFilter(URL 模式 /*,context-path 为 / 时为 /kms/*),本控制器路径 /api/kms/**/kms/** 均不在 KmsSecurityFilter.isExcludeURI 的豁免名单内(豁免仅覆盖 /login.*/admin/domain.*/tray/service/authtimeservice/OfficeServer.*outsideshare/.*/preview、静态资源后缀 .jpg/.gif/.png/.ico/.js/.css/.map/.woff/.html/.propertiesactuator/health 等)。过滤器调用 Security.getUserIdFromToken(request),取不到用户则返回 HTTP 401因此所有端点均需 accessToken,可通过以下任一方式传递(据 Security.getUserIdFromToken):query 参数 accessToken、query 参数 access_token(移动端)、请求头 accessToken、Cookie accessToken、请求头 Authorization: Bearer <token>
  • 特殊入参 mode=app(据源码):当请求带 query 参数 mode=app(手机 App「嗨办公」场景)时,KmsSecurityFilter 会以 query 参数 userId 直接生成并下发 accessToken Cookie,跳过常规 token 校验;非 App 场景请勿使用。
  • 执行用户:控制器内 getUser()(继承自 AbstractBaseController)调用 Security.getUserIdFromToken(request) 还原当前用户 id,再经 Feign(UserAPI.getUserById)装载 KmsUseruserCode 参数
  • 响应结构:统一 Resource(见 ../index.md「统一响应结构」),字段为 errcode/errmsg/data/errors注意:KMS 的 ResourceAbstractBaseController 内部类,其构造器对 data 执行 ESAPI.encode(data) 做 XSS 编码,故 data 中的 HTML 特殊字符会被转义。
  • HTTP 状态码与错误码(据源码 AbstractBaseController 全局异常处理):成功默认 HTTP 200;InvalidRequestException → HTTP 400 / errcode=400;UnauthorizedException → HTTP 403 / errcode=403;ForbiddenException(权限不足)→ HTTP 403 / errcode=403;ResourceNotFoundException → HTTP 404 / errcode=404;其他 Exception → HTTP 500 / errcode=500。个别端点(如 #43 deleteFileCategory)在 catch 块内显式返回 errcode=500
  • @RequestParam 默认必填:未标 required=false 且无 defaultValue 的 query 参数按 Spring 约定为必填。
  • 路径变量diskIdfolderIdfileIdfileChecksum 等均为 KMS 内部主键(明文 id),非 DES 加密密文(与 runtime 模块不同)。

1. 获取文件详情

根据文件 Id 获取单个文件对象的详情。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/disks/folders/files/{fileId}(完整:{kms-context}/api/kms/disks/folders/files/{fileId}
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
fileId path string 文件Id

请求示例

GET /api/kms/disks/folders/files/__FILEID__?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 data:文件详情对象(由 dataBuilder.buildFileEntityReturnData 构造,包含文件实体与当前用户对该文件拥有的操作权限集合)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": { "id": "__FILEID__", "name": "方案.docx", "type": "docx", "operations": [1, 2, 4] },
  "errors": null
}


2. 查询贡献者的上传文件数量

按当前用户所在企业域,统计贡献者(上传人)的上传文件数量,返回前 N 名。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/contributor/fileCount(完整:{kms-context}/api/kms/contributor/fileCount
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
topCount query int 返回前 N 名(源码标注 required=false,但为基本类型,建议显式传入)

请求示例

GET /api/kms/contributor/fileCount?topCount=10&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataContributionFileCount 列表,每项含贡献者信息及其上传文件数。


3. 判断文件是否加密

根据文件相对路径判断该文件是否已加密。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/file/isencrypt(完整:{kms-context}/api/kms/file/isencrypt
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
fileUrl query string 文件相对路径(相对 kms/ 存储根目录)

请求示例

GET /api/kms/file/isencrypt?fileUrl=2024/01/abc.docx&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 Resourcedatabooleantrue 表示文件已加密。


4. 目录下的文件列表

分页查询指定网盘下指定文件夹内的文件列表(含排序)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/disks/{diskId}/folders/{folderId}/files(完整:{kms-context}/api/kms/disks/{diskId}/folders/{folderId}/files
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 网盘Id
folderId path string 文件夹Id
fileName query string 文件名过滤关键字
orderByfield query string 排序字段(如 NAME/SIZE/LAST_MODIFY_DATE 等)
orderMode query string 排序模式(ASC/DESC
pageNo query int 页码,从 1 开始
linesPerPage query int 每页条数

请求示例

GET /api/kms/disks/__DISKID__/folders/__FOLDERID__/files?pageNo=1&linesPerPage=20&orderByfield=LAST_MODIFY_DATE&orderMode=DESC&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<FileObject>(由 dataBuilder.buildFileObjectReturnData 构造,包含当前页数据与分页信息)。


5. 获取回收站文件列表

分页查询当前用户企业域下、已软删除(is_delete=trueis_recycle_delete=false)的回收站文件。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/recycle/files(完整:{kms-context}/api/kms/recycle/files
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
pageNo query int 页码,默认 1
linesPerPage query int 每页条数,默认 10

请求示例

GET /api/kms/recycle/files?pageNo=1&linesPerPage=10&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<FileEntity>,回收站文件分页数据。


6. 恢复回收站

从回收站恢复文件/文件夹。若请求体 fileIdsfolderIds 均为 null,则恢复当前用户回收站内的全部内容;否则按指定 Id 列表恢复(含递归恢复子文件夹)。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/recycle/restore(完整:{kms-context}/api/kms/recycle/restore
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
body body object JSON 对象,见下方请求体

请求体

{
  "fileIds": ["__FILEID1__", "__FILEID2__"],
  "folderIds": ["__FOLDERID1__"]
}

fileIdsfolderIds 均不传(或为 null)时表示恢复全部。

请求示例

POST /api/kms/recycle/restore?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

{ "fileIds": ["__FILEID1__"], "folderIds": ["__FOLDERID1__"] }

响应

结构:统一 Resourcedatanull(操作完成后返回 success("ok", null))。


7. 删除回收站

将回收站中的文件/文件夹标记为彻底删除(置 is_recycle_delete=true)。若请求体 fileIdsfolderIds 均为 null,则对当前用户回收站全部内容生效。

  • 接口类型:REST 资源
  • 请求方式DELETE
  • 请求路径/recycle(完整:{kms-context}/api/kms/recycle
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
body body object JSON 对象,含 fileIdsfolderIds 数组(结构同 #6)

请求示例

DELETE /api/kms/recycle?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

{ "fileIds": ["__FILEID1__"], "folderIds": [] }

响应

结构:统一 Resourcedatanull


8. 目录下的文件列表(移动端个人 km)

移动端专属:分页查询指定网盘下指定文件夹内的文件列表(与 #4 同语义,路径前缀含 /phone/,供移动端个人 km 使用)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/disks/{diskId}/folders/{folderId}/phone/files(完整:{kms-context}/api/kms/disks/{diskId}/folders/{folderId}/phone/files
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 网盘Id
folderId path string 文件夹Id
fileName query string 文件名过滤关键字
orderByfield query string 排序字段
orderMode query string 排序模式(ASC/DESC
pageNo query int 页码
linesPerPage query int 每页条数

请求示例

GET /api/kms/disks/__DISKID__/folders/__FOLDERID__/phone/files?pageNo=1&linesPerPage=20&orderByfield=LAST_MODIFY_DATE&orderMode=DESC&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<FileObject>(由 dataBuilder.buildFileObjectReturnData 构造)。


9. 目录下的文件列表(路径不含 diskId/folderId)

分页查询指定文件夹内的文件列表,folderId 通过 query 参数 ownerId 传入(路径中不出现 diskId/folderId)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/disks/folders/files(完整:{kms-context}/api/kms/disks/folders/files
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
ownerId query string 文件夹Id(源码形参名 folderId,绑定到 query 参数 ownerId;建议传入)
fileName query string 文件名过滤关键字
orderByfield query string 排序字段
orderMode query string 排序模式
pageNo query int 页码
linesPerPage query int 每页条数

请求示例

GET /api/kms/disks/folders/files?ownerId=__FOLDERID__&pageNo=1&linesPerPage=20&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<FileObject>(由 dataBuilder.buildFileObjectReturnData 构造)。


10. 查询文件

按文件名等条件分页查询文件(当前实现中核心服务调用被注释,data 当前始终为 null,保留接口占位)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/files/data(完整:{kms-context}/api/kms/files/data
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
fileName query string 文件名过滤关键字
orderByfield query string 排序字段
orderMode query string 排序模式
pageNo query int 页码
linesPerPage query int 每页条数

请求示例

GET /api/kms/files/data?fileName=报告&pageNo=1&linesPerPage=20&orderByfield=LAST_MODIFY_DATE&orderMode=DESC&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<FileEntity>(据源码当前实现返回 null,待服务层启用后返回真实分页数据)。


11. 文件重命名

修改指定文件的名称。文件不存在或新名称为空时抛 InvalidRequestException(HTTP 400)。

  • 接口类型:REST 资源
  • 请求方式PATCH
  • 请求路径/disks/{diskId}/files/{fileId}/rename(完整:{kms-context}/api/kms/disks/{diskId}/files/{fileId}/rename
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 网盘Id
fileId path string 文件Id
body body string(JSON) JSON 字符串,含字段 name

请求体

{ "name": "新文件名.docx" }

请求示例

PATCH /api/kms/disks/__DISKID__/files/__FILEID__/rename?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

{ "name": "新文件名.docx" }

响应

结构:统一 Resourcedata:重命名后的 FileEntity

失败示例(参数有误)

{ "errcode": 400, "errmsg": "请求参数有误", "data": null, "errors": null }


12. 文件移动

将指定文件移动到目标文件夹。

  • 接口类型:REST 资源
  • 请求方式PATCH
  • 请求路径/disks/{diskId}/files/{fileId}/moveto/folderId/{destFolderId}(完整:{kms-context}/api/kms/disks/{diskId}/files/{fileId}/moveto/folderId/{destFolderId}
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 网盘Id
fileId path string 待移动文件Id
destFolderId path string 目标文件夹Id

请求示例

PATCH /api/kms/disks/__DISKID__/files/__FILEID__/moveto/folderId/__DESTFOLDERID__?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 Resourcedatabooleantrue 表示移动成功。


13. 文件删除

将指定文件移入回收站(按当前用户标记软删除)。

  • 接口类型:REST 资源
  • 请求方式DELETE
  • 请求路径/disks/{diskId}/files/{fileId}(完整:{kms-context}/api/kms/disks/{diskId}/files/{fileId}
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 网盘Id
fileId path string 文件Id

请求示例

DELETE /api/kms/disks/__DISKID__/files/__FILEID__?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 Resourcedatabooleantrue 表示删除成功。


14. 文件内部分享

将指定文件分享给平台内部若干用户。需当前用户对该文件拥有 CODE_SHARE 权限,否则抛 ForbiddenException(HTTP 403)。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/disks/{diskId}/files/{fileId}/insideshare(完整:{kms-context}/api/kms/disks/{diskId}/files/{fileId}/insideshare
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 网盘Id
fileId path string 文件Id
body body array(string) 被分享用户Id数组
source query string 分享来源(无注解,Spring 默认按形参名绑定 query 参数)

请求体

["__USERID1__", "__USERID2__"]

请求示例

POST /api/kms/disks/__DISKID__/files/__FILEID__/insideshare?source=pc&accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

["__USERID1__", "__USERID2__"]

响应

结构:统一 Resourcedatabooleantrue 表示分享成功;当 userIds 为空数组时返回 false

失败示例(权限不足)

{ "errcode": 403, "errmsg": "权限不足,分享文件失败", "data": null, "errors": null }


15. 别人分享给自己的文件列表

分页查询他人分享给当前用户的文件列表。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/sharefiles(完整:{kms-context}/api/kms/sharefiles
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
orderByfield query string 排序字段
orderMode query string 排序模式
pageNo query int 页码
linesPerPage query int 每页条数

请求示例

GET /api/kms/sharefiles?pageNo=1&linesPerPage=20&orderByfield=LAST_MODIFY_DATE&orderMode=DESC&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<FileEntity>(由 dataBuilder.buildFileEntityReturnData 构造)。


16. 我的分享列表

分页查询当前用户分享给他人(内部)的所有文件。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/mysharefiles(完整:{kms-context}/api/kms/mysharefiles
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
orderByfield query string 排序字段
orderMode query string 排序模式
pageNo query int 页码
linesPerPage query int 每页条数

请求示例

GET /api/kms/mysharefiles?pageNo=1&linesPerPage=20&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<FileEntity>(由 dataBuilder.buildFileEntityReturnData 构造)。


17. 我的外部分享列表

分页查询当前用户通过外部分享(生成分享码)分享的所有文件。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/myoutsidesharefiles(完整:{kms-context}/api/kms/myoutsidesharefiles
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
orderByfield query string 排序字段
orderMode query string 排序模式
pageNo query int 页码
linesPerPage query int 每页条数

请求示例

GET /api/kms/myoutsidesharefiles?pageNo=1&linesPerPage=20&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<FileEntity>(直接返回服务层结果,未经 dataBuilder 包装)。


18. 添加文件到收藏

将指定文件加入当前用户的收藏。需对该文件拥有 CODE_FAVORITE 权限;重复收藏抛 InvalidRequestException(HTTP 400)。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/files/{fileId}/favorites(完整:{kms-context}/api/kms/files/{fileId}/favorites
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
fileId path string 文件Id(若为引用类型,服务端会回溯到原始上传文件Id)

请求示例

POST /api/kms/files/__FILEID__/favorites?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 Resourcedatabooleantrue 表示收藏成功。

失败示例(已收藏)

{ "errcode": 400, "errmsg": "文件已经收藏,无需重复收藏", "data": null, "errors": null }


19. 从收藏中移除文件

将指定文件从当前用户的收藏中取消。文件未收藏时抛 InvalidRequestException(HTTP 400)。

  • 接口类型:REST 资源
  • 请求方式DELETE
  • 请求路径/files/{fileId}/favorites(完整:{kms-context}/api/kms/files/{fileId}/favorites
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
fileId path string 文件Id

请求示例

DELETE /api/kms/files/__FILEID__/favorites?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 Resourcedatabooleantrue 表示取消收藏成功。


20. 获取收藏文件列表

分页查询当前用户收藏的文件列表。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/favoritefiles(完整:{kms-context}/api/kms/favoritefiles
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
orderByfield query string 排序字段
orderMode query string 排序模式
pageNo query int 页码
linesPerPage query int 每页条数

请求示例

GET /api/kms/favoritefiles?pageNo=1&linesPerPage=20&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<FileEntity>(由 dataBuilder.buildFileEntityReturnData 构造)。


21. 文件预览

对指定文件进行预览(服务端转 PDF 并按配置叠加预览水印)。对图片类型文件,服务端生成含水印的图片地址。预览前会向预览记录表插入一条当前用户的预览记录。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/disks/{diskId}/files/{fileId}/preview(完整:{kms-context}/api/kms/disks/{diskId}/files/{fileId}/preview
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 网盘Id
fileId path string 文件Id

请求示例

GET /api/kms/disks/__DISKID__/files/__FILEID__/preview?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataString(JSON 序列化结果),包含 fileEntity(文件实体,含 operations 当前用户操作权限)、pdfFileUrl/url(预览地址,图片类型为水印图地址)。


22. 手机端预览(含水印)

移动端文件预览。按当前用户名与配置生成预览水印,返回预览路径。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/mobile/disks/{diskId}/files/{fileId}/preview(完整:{kms-context}/api/kms/mobile/disks/{diskId}/files/{fileId}/preview
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 网盘Id
fileId path string 文件Id

请求示例

GET /api/kms/mobile/disks/__DISKID__/files/__FILEID__/preview?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataString,移动端预览路径。


23. 文件外部分享

对指定文件生成外部分享记录,返回分享码与分享Id。提取码 code 缺省时由服务端随机生成。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/files/{fileId}/outsideshare(完整:{kms-context}/api/kms/files/{fileId}/outsideshare
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
fileId path string 文件Id
body body object JSON 对象,含 code(提取码)、duration(有效期截止时间戳,毫秒)

请求体

{ "code": "abcd", "duration": "1735689600000" }

请求示例

POST /api/kms/files/__FILEID__/outsideshare?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

{ "code": "abcd", "duration": "1735689600000" }

响应

结构:统一 ResourcedataJSONObject,结构 { "code": "<提取码>", "id": "<分享Id>" }


24. FileObjs 批量移动

将一组文件/文件夹批量移动到目标文件夹。请求体为 JSON 数组字符串,每项含 fileObjectIdisFolder

  • 接口类型:REST 资源
  • 请求方式PATCH
  • 请求路径/disks/{diskId}/fileObjs/moveto/folders/{folderId}(完整:{kms-context}/api/kms/disks/{diskId}/fileObjs/moveto/folders/{folderId}
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 网盘Id
folderId path string 目标文件夹Id
body body string(JSON) JSON 数组字符串,见下方请求体

请求体

[
  { "fileObjectId": "__FILEID1__", "isFolder": false },
  { "fileObjectId": "__FOLDERID1__", "isFolder": true }
]

请求示例

PATCH /api/kms/disks/__DISKID__/fileObjs/moveto/folders/__FOLDERID__?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

[ { "fileObjectId": "__FILEID1__", "isFolder": false } ]

响应

结构:统一 Resourcedatabooleantrue 表示批量移动成功。


25. FileObjs 批量删除

将一组文件/文件夹批量移入回收站(软删除)。请求体为 JSON 数组字符串,每项含 fileObjectIdisFolder

  • 接口类型:REST 资源
  • 请求方式DELETE
  • 请求路径/disks/{diskId}/fileObjs(完整:{kms-context}/api/kms/disks/{diskId}/fileObjs
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 网盘Id
body body string(JSON) JSON 数组字符串(结构同 #24)

请求示例

DELETE /api/kms/disks/__DISKID__/fileObjs?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

[ { "fileObjectId": "__FILEID1__", "isFolder": false } ]

响应

结构:统一 Resourcedatabooleantrue 表示批量删除成功。


26. 根据所属 id 和文件名查找文件

按文件夹归属 Id 与文件名分页查找文件(按 LAST_MODIFY_DATE DESC 固定排序)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/disks/files(完整:{kms-context}/api/kms/disks/files
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
ownerId query string 文件夹归属Id
fileName query string 文件名关键字
pageNo query string 页码(字符串型数字)
linesPerPage query string 每页条数(字符串型数字)

请求示例

GET /api/kms/disks/files?ownerId=__FOLDERID__&fileName=报告&pageNo=1&linesPerPage=20&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<FileObject>(直接返回服务层结果)。


27. 网盘的预览与下载次数

根据网盘 Id 统计该网盘下文件的预览次数与下载次数。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/disks/{diskId}/files/viewsAndDownloads(完整:{kms-context}/api/kms/disks/{diskId}/files/viewsAndDownloads
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 网盘Id

请求示例

GET /api/kms/disks/__DISKID__/files/viewsAndDownloads?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataMap<String, Object>,含预览次数、下载次数等统计指标。


28. 给文件贴标签(批量,旧接口)

为多个文件批量贴标签。fileIdscategorys 均为逗号分隔字符串。若 fileIds 中包含文件夹 Id,返回 InvalidRequestException(HTTP 400)。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/files/categorys(完整:{kms-context}/api/kms/files/categorys
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
fileIds query string 文件Id逗号分隔串(不可含文件夹Id)
categorys query string 标签名逗号分隔串(允许空串)

请求示例

PUT /api/kms/files/categorys?fileIds=__F1__,__F2__&categorys=标签1,标签2&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataString,成功为空串 ""

失败示例(含文件夹)

{ "errcode": 400, "errmsg": "请不要选择文件夹,文件夹不能贴标签", "data": null, "errors": null }


29. 按标签/用户/时间分页查询文件

按标签名、贡献者、时间范围分页查询文件(综合查询)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/files(完整:{kms-context}/api/kms/files
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
categoryName query string 标签名(调用方需自行 trim
userIds query array(string) 贡献者用户Id列表
beginTime query string 起始时间戳(毫秒,字符串型)
endTime query string 截止时间戳(毫秒,字符串型)
linesPerPage query string 每页条数(字符串型数字)
pageNo query string 页码(字符串型数字)

请求示例

GET /api/kms/files?categoryName=报告&linesPerPage=20&pageNo=1&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<FileEntity>(按 categoryName.trim() + userIds + 时间范围查询的结果)。

失败示例(分页参数缺失)

{ "errcode": 400, "errmsg": "每页显示的条数为空或者现在页数为空", "data": null, "errors": null }


30. 根据文件 id 获取标签

返回指定文件已贴的标签名列表。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/files/{id}/categorys(完整:{kms-context}/api/kms/files/{id}/categorys
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
id path string 文件Id

请求示例

GET /api/kms/files/__FILEID__/categorys?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataList<String>,标签名数组(文件无标签时为空数组)。


31. 根据文件 id 获取所在文件夹名称

返回指定文件所属文件夹的名称。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/files/{id}/folder/name(完整:{kms-context}/api/kms/files/{id}/folder/name
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
id path string 文件Id

请求示例

GET /api/kms/files/__FILEID__/folder/name?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataString,所在文件夹名称。


32. 获取编辑器所需参数(新建空文件)

在指定网盘/文件夹下创建一个空文件,返回在线编辑器所需的预览地址、相对路径、showName、用户名等参数,并更新最后编辑时间与编辑记录表。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/getneedparam(完整:{kms-context}/api/kms/getneedparam
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId query string 网盘Id
folderId query string 文件夹Id

请求示例

GET /api/kms/getneedparam?diskId=__DISKID__&folderId=__FOLDERID__&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataJSONObject,结构 { "showName": "<显示名>", "username": "<用户名>", "id": "<文件Id>", "path": "<完整编辑地址>", "relativePath": "<相对路径>" }


33. 获取编辑器所需参数(已有文件)

按指定文件 Id 加载已有文件,返回在线编辑器所需的预览地址、相对路径、showName、用户名、folderId 等参数,并更新最后编辑时间与编辑记录表。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/getneedparam2(完整:{kms-context}/api/kms/getneedparam2
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
id query string 文件Id

请求示例

GET /api/kms/getneedparam2?id=__FILEID__&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataJSONObject,结构 { "folderId": "<文件夹Id>", "showName": "<显示名>", "username": "<用户名>", "id": "<文件Id>", "path": "<完整编辑地址>", "relativePath": "<相对路径>" }


34. 记录文件编辑时间

更新指定文件的最后编辑时间,并向编辑记录表插入一条当前用户、当前时间的编辑记录。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/edit/time(完整:{kms-context}/api/kms/edit/time
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
fileId query string 文件Id

请求示例

POST /api/kms/edit/time?fileId=__FILEID__&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataString,回传的文件Id。


35. 创建空文档

在指定网盘/文件夹下创建一个具名空文档,返回新建文件实体。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/disks/{diskId}/folders/{folderId}(完整:{kms-context}/api/kms/disks/{diskId}/folders/{folderId}
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
diskId path string 网盘Id
folderId path string 文件夹Id
fileName query string 新建文件名

请求示例

POST /api/kms/disks/__DISKID__/folders/__FOLDERID__?fileName=新建文档.docx&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 Resourcedata:新建的 FileEntity


36. 获取模板文件列表

列出系统模板目录下的全部模板文件名(按扩展名排序)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/files/template(完整:{kms-context}/api/kms/files/template
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

无。

请求示例

GET /api/kms/files/template?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataList<String>,模板文件名数组。


37. 创建归档文件

按上传归档信息创建一条归档文件记录。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/archive/file(完整:{kms-context}/api/kms/archive/file
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
id query string 归档文件Id
diskId query string 网盘Id
fileName query string 文件名
longSize query long 文件大小(字节)
folderId query string 所属文件夹Id

请求示例

POST /api/kms/archive/file?id=__ID__&diskId=__DISKID__&fileName=报告.docx&longSize=1024&folderId=__FOLDERID__&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 Resourcedatabooleantrue 表示创建成功。


38. 获取文件的自动标签集合

根据文件 Id 与当前用户企业域,返回该文件的自动推荐标签集合。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/files/{fileId}/auto/categorys(完整:{kms-context}/api/kms/files/{fileId}/auto/categorys
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
fileId path string 文件Id

请求示例

GET /api/kms/files/__FILEID__/auto/categorys?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataMap,自动推荐标签集合。


39. 通过文件校验码查询文件

根据文件校验码(checksum)查询所有匹配的文件信息列表。校验码为空时抛 InvalidRequestException(HTTP 400)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/files/{fileChecksum}(完整:{kms-context}/api/kms/files/{fileChecksum}
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
fileChecksum path string 文件校验码

请求示例

GET /api/kms/files/__CHECKSUM__?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataList<Map<String, Object>>,每项含 id/name/type/size/checksum/creator/creatorId/createDate/lastModifyDate/url/folderId/diskId/categorys 字段。


40. 单个文件贴标签(新接口)

为单个文件贴标签(覆盖原标签)。请求体含 fileId 与标签数组(每项含 categoryNamecategoryId);标签数组为空时清空该文件全部标签。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/file/categorys/paste(完整:{kms-context}/api/kms/file/categorys/paste
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
body body object JSON 对象,见下方请求体

请求体

{
  "fileId": "__FILEID__",
  "categorys": [
    { "categoryName": "标签1", "categoryId": "__CATID1__" },
    { "categoryName": "标签2", "categoryId": "__CATID2__" }
  ]
}

请求示例

PUT /api/kms/file/categorys/paste?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

{ "fileId": "__FILEID__", "categorys": [ { "categoryName": "标签1", "categoryId": "__CATID1__" } ] }

响应

结构:统一 Resourcedata:更新后的 FileEntity


41. 多个文件贴标签(新接口)

为多个文件追加标签(去重)。请求体为数组,每项含 fileIdcategorys;对每个文件已有的标签做去重后追加,不动旧标签。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/files/categorys/paste(完整:{kms-context}/api/kms/files/categorys/paste
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
body body array(object) JSON 数组,见下方请求体

请求体

[
  {
    "fileId": "__FILEID1__",
    "categorys": [ { "categoryName": "标签1", "categoryId": "__CATID1__" } ]
  },
  {
    "fileId": "__FILEID2__",
    "categorys": [ { "categoryName": "标签2", "categoryId": "__CATID2__" } ]
  }
]

请求示例

PUT /api/kms/files/categorys/paste?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

[ { "fileId": "__FILEID1__", "categorys": [ { "categoryName": "标签1", "categoryId": "__CATID1__" } ] } ]

响应

结构:统一 Resourcedata:回传请求体(List<JSONObject>)。


42. 获取用户的文件上传数量

按当前用户 Id(与文件来源类型)统计其上传文件数量。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/files/userUploadFileCount(完整:{kms-context}/api/kms/files/userUploadFileCount
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
originType query int 文件来源类型(不传则统计全部来源)

请求示例

GET /api/kms/files/userUploadFileCount?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataInteger,文件上传数量。


43. 删除文件单个标签

从指定文件移除单个标签(同步更新文件 categorys 字段、categorysJson 与文件标签中间表)。

  • 接口类型:REST 资源
  • 请求方式DELETE
  • 请求路径/files/deleteFileCategory(完整:{kms-context}/api/kms/files/deleteFileCategory
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms文件模块

请求参数

参数名 位置 类型 必填 说明
fileId query string 文件Id
categoryName query string 待删除标签名

请求示例

DELETE /api/kms/files/deleteFileCategory?fileId=__FILEID__&categoryName=标签1&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 Resourcedata:更新后的 FileEntity

失败示例(内部异常,据源码 catch 显式返回)

{ "errcode": 500, "errmsg": "<异常消息>", "data": null, "errors": null }