文件(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+KmsSecurityFilter):KmsMvcConfig注册全局 Servlet 过滤器KmsSecurityFilter(URL 模式/*,context-path 为/时为/kms/*),本控制器路径/api/kms/**、/kms/**均不在KmsSecurityFilter.isExcludeURI的豁免名单内(豁免仅覆盖/login.*、/admin、/domain.*、/tray/service、/authtime、service/OfficeServer、.*outsideshare/.*/preview、静态资源后缀.jpg/.gif/.png/.ico/.js/.css/.map/.woff/.html/.properties、actuator/health等)。过滤器调用Security.getUserIdFromToken(request),取不到用户则返回 HTTP401。因此所有端点均需 accessToken,可通过以下任一方式传递(据Security.getUserIdFromToken):query 参数accessToken、query 参数access_token(移动端)、请求头accessToken、CookieaccessToken、请求头Authorization: Bearer <token>。 - 特殊入参
mode=app(据源码):当请求带 query 参数mode=app(手机 App「嗨办公」场景)时,KmsSecurityFilter会以 query 参数userId直接生成并下发accessTokenCookie,跳过常规 token 校验;非 App 场景请勿使用。 - 执行用户:控制器内
getUser()(继承自AbstractBaseController)调用Security.getUserIdFromToken(request)还原当前用户 id,再经 Feign(UserAPI.getUserById)装载KmsUser。无userCode参数。 - 响应结构:统一
Resource(见 ../index.md「统一响应结构」),字段为errcode/errmsg/data/errors。注意:KMS 的Resource为AbstractBaseController内部类,其构造器对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。个别端点(如 #43deleteFileCategory)在catch块内显式返回errcode=500。 @RequestParam默认必填:未标required=false且无defaultValue的 query 参数按 Spring 约定为必填。- 路径变量:
diskId、folderId、fileId、fileChecksum等均为 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 |
请求示例¶
响应¶
结构:统一 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,但为基本类型,建议显式传入) |
请求示例¶
响应¶
结构:统一 Resource。
data:ContributionFileCount 列表,每项含贡献者信息及其上传文件数。
3. 判断文件是否加密¶
根据文件相对路径判断该文件是否已加密。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/file/isencrypt(完整:{kms-context}/api/kms/file/isencrypt) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| fileUrl | query | string | 是 | 文件相对路径(相对 kms/ 存储根目录) |
请求示例¶
响应¶
结构:统一 Resource。
data:boolean,true 表示文件已加密。
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
响应¶
结构:统一 Resource。
data:DataPackage<FileObject>(由 dataBuilder.buildFileObjectReturnData 构造,包含当前页数据与分页信息)。
5. 获取回收站文件列表¶
分页查询当前用户企业域下、已软删除(is_delete=true 且 is_recycle_delete=false)的回收站文件。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/recycle/files(完整:{kms-context}/api/kms/recycle/files) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| pageNo | query | int | 否 | 页码,默认 1 |
| linesPerPage | query | int | 否 | 每页条数,默认 10 |
请求示例¶
响应¶
结构:统一 Resource。
data:DataPackage<FileEntity>,回收站文件分页数据。
6. 恢复回收站¶
从回收站恢复文件/文件夹。若请求体 fileIds 与 folderIds 均为 null,则恢复当前用户回收站内的全部内容;否则按指定 Id 列表恢复(含递归恢复子文件夹)。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/recycle/restore(完整:{kms-context}/api/kms/recycle/restore) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| body | body | object | 是 | JSON 对象,见下方请求体 |
请求体¶
当
fileIds与folderIds均不传(或为null)时表示恢复全部。
请求示例¶
POST /api/kms/recycle/restore?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json
{ "fileIds": ["__FILEID1__"], "folderIds": ["__FOLDERID1__"] }
响应¶
结构:统一 Resource。
data:null(操作完成后返回 success("ok", null))。
7. 删除回收站¶
将回收站中的文件/文件夹标记为彻底删除(置 is_recycle_delete=true)。若请求体 fileIds 与 folderIds 均为 null,则对当前用户回收站全部内容生效。
- 接口类型:REST 资源
- 请求方式:
DELETE - 请求路径:
/recycle(完整:{kms-context}/api/kms/recycle) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| body | body | object | 是 | JSON 对象,含 fileIds、folderIds 数组(结构同 #6) |
请求示例¶
DELETE /api/kms/recycle?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json
{ "fileIds": ["__FILEID1__"], "folderIds": [] }
响应¶
结构:统一 Resource。
data:null。
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
响应¶
结构:统一 Resource。
data:DataPackage<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
响应¶
结构:统一 Resource。
data:DataPackage<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
响应¶
结构:统一 Resource。
data:DataPackage<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 |
请求体¶
请求示例¶
PATCH /api/kms/disks/__DISKID__/files/__FILEID__/rename?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json
{ "name": "新文件名.docx" }
响应¶
结构:统一 Resource。
data:重命名后的 FileEntity。
失败示例(参数有误):
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
响应¶
结构:统一 Resource。
data:boolean,true 表示移动成功。
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 |
请求示例¶
响应¶
结构:统一 Resource。
data:boolean,true 表示删除成功。
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 参数) |
请求体¶
请求示例¶
POST /api/kms/disks/__DISKID__/files/__FILEID__/insideshare?source=pc&accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json
["__USERID1__", "__USERID2__"]
响应¶
结构:统一 Resource。
data:boolean,true 表示分享成功;当 userIds 为空数组时返回 false。
失败示例(权限不足):
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
响应¶
结构:统一 Resource。
data:DataPackage<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 | 是 | 每页条数 |
请求示例¶
响应¶
结构:统一 Resource。
data:DataPackage<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 | 是 | 每页条数 |
请求示例¶
响应¶
结构:统一 Resource。
data:DataPackage<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) |
请求示例¶
响应¶
结构:统一 Resource。
data:boolean,true 表示收藏成功。
失败示例(已收藏):
19. 从收藏中移除文件¶
将指定文件从当前用户的收藏中取消。文件未收藏时抛 InvalidRequestException(HTTP 400)。
- 接口类型:REST 资源
- 请求方式:
DELETE - 请求路径:
/files/{fileId}/favorites(完整:{kms-context}/api/kms/files/{fileId}/favorites) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| fileId | path | string | 是 | 文件Id |
请求示例¶
响应¶
结构:统一 Resource。
data:boolean,true 表示取消收藏成功。
20. 获取收藏文件列表¶
分页查询当前用户收藏的文件列表。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/favoritefiles(完整:{kms-context}/api/kms/favoritefiles) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| orderByfield | query | string | 否 | 排序字段 |
| orderMode | query | string | 否 | 排序模式 |
| pageNo | query | int | 是 | 页码 |
| linesPerPage | query | int | 是 | 每页条数 |
请求示例¶
响应¶
结构:统一 Resource。
data:DataPackage<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 |
请求示例¶
响应¶
结构:统一 Resource。
data:String(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 |
请求示例¶
响应¶
结构:统一 Resource。
data:String,移动端预览路径。
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(有效期截止时间戳,毫秒) |
请求体¶
请求示例¶
POST /api/kms/files/__FILEID__/outsideshare?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json
{ "code": "abcd", "duration": "1735689600000" }
响应¶
结构:统一 Resource。
data:JSONObject,结构 { "code": "<提取码>", "id": "<分享Id>" }。
24. FileObjs 批量移动¶
将一组文件/文件夹批量移动到目标文件夹。请求体为 JSON 数组字符串,每项含 fileObjectId 与 isFolder。
- 接口类型: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 } ]
响应¶
结构:统一 Resource。
data:boolean,true 表示批量移动成功。
25. FileObjs 批量删除¶
将一组文件/文件夹批量移入回收站(软删除)。请求体为 JSON 数组字符串,每项含 fileObjectId 与 isFolder。
- 接口类型: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 } ]
响应¶
结构:统一 Resource。
data:boolean,true 表示批量删除成功。
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
响应¶
结构:统一 Resource。
data:DataPackage<FileObject>(直接返回服务层结果)。
27. 网盘的预览与下载次数¶
根据网盘 Id 统计该网盘下文件的预览次数与下载次数。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/disks/{diskId}/files/viewsAndDownloads(完整:{kms-context}/api/kms/disks/{diskId}/files/viewsAndDownloads) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| diskId | path | string | 是 | 网盘Id |
请求示例¶
响应¶
结构:统一 Resource。
data:Map<String, Object>,含预览次数、下载次数等统计指标。
28. 给文件贴标签(批量,旧接口)¶
为多个文件批量贴标签。fileIds、categorys 均为逗号分隔字符串。若 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 | 是 | 标签名逗号分隔串(允许空串) |
请求示例¶
响应¶
结构:统一 Resource。
data:String,成功为空串 ""。
失败示例(含文件夹):
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 | 是 | 页码(字符串型数字) |
请求示例¶
响应¶
结构:统一 Resource。
data:DataPackage<FileEntity>(按 categoryName.trim() + userIds + 时间范围查询的结果)。
失败示例(分页参数缺失):
30. 根据文件 id 获取标签¶
返回指定文件已贴的标签名列表。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/files/{id}/categorys(完整:{kms-context}/api/kms/files/{id}/categorys) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| id | path | string | 是 | 文件Id |
请求示例¶
响应¶
结构:统一 Resource。
data:List<String>,标签名数组(文件无标签时为空数组)。
31. 根据文件 id 获取所在文件夹名称¶
返回指定文件所属文件夹的名称。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/files/{id}/folder/name(完整:{kms-context}/api/kms/files/{id}/folder/name) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| id | path | string | 是 | 文件Id |
请求示例¶
响应¶
结构:统一 Resource。
data:String,所在文件夹名称。
32. 获取编辑器所需参数(新建空文件)¶
在指定网盘/文件夹下创建一个空文件,返回在线编辑器所需的预览地址、相对路径、showName、用户名等参数,并更新最后编辑时间与编辑记录表。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/getneedparam(完整:{kms-context}/api/kms/getneedparam) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| diskId | query | string | 是 | 网盘Id |
| folderId | query | string | 是 | 文件夹Id |
请求示例¶
响应¶
结构:统一 Resource。
data:JSONObject,结构 { "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 |
请求示例¶
响应¶
结构:统一 Resource。
data:JSONObject,结构 { "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 |
请求示例¶
响应¶
结构:统一 Resource。
data:String,回传的文件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
响应¶
结构:统一 Resource。
data:新建的 FileEntity。
36. 获取模板文件列表¶
列出系统模板目录下的全部模板文件名(按扩展名排序)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/files/template(完整:{kms-context}/api/kms/files/template) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
无。
请求示例¶
响应¶
结构:统一 Resource。
data:List<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
响应¶
结构:统一 Resource。
data:boolean,true 表示创建成功。
38. 获取文件的自动标签集合¶
根据文件 Id 与当前用户企业域,返回该文件的自动推荐标签集合。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/files/{fileId}/auto/categorys(完整:{kms-context}/api/kms/files/{fileId}/auto/categorys) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| fileId | path | string | 是 | 文件Id |
请求示例¶
响应¶
结构:统一 Resource。
data:Map,自动推荐标签集合。
39. 通过文件校验码查询文件¶
根据文件校验码(checksum)查询所有匹配的文件信息列表。校验码为空时抛 InvalidRequestException(HTTP 400)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/files/{fileChecksum}(完整:{kms-context}/api/kms/files/{fileChecksum}) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| fileChecksum | path | string | 是 | 文件校验码 |
请求示例¶
响应¶
结构:统一 Resource。
data:List<Map<String, Object>>,每项含 id/name/type/size/checksum/creator/creatorId/createDate/lastModifyDate/url/folderId/diskId/categorys 字段。
40. 单个文件贴标签(新接口)¶
为单个文件贴标签(覆盖原标签)。请求体含 fileId 与标签数组(每项含 categoryName、categoryId);标签数组为空时清空该文件全部标签。
- 接口类型: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__" } ] }
响应¶
结构:统一 Resource。
data:更新后的 FileEntity。
41. 多个文件贴标签(新接口)¶
为多个文件追加标签(去重)。请求体为数组,每项含 fileId 与 categorys;对每个文件已有的标签做去重后追加,不动旧标签。
- 接口类型: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__" } ] } ]
响应¶
结构:统一 Resource。
data:回传请求体(List<JSONObject>)。
42. 获取用户的文件上传数量¶
按当前用户 Id(与文件来源类型)统计其上传文件数量。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/files/userUploadFileCount(完整:{kms-context}/api/kms/files/userUploadFileCount) - 鉴权:是(需 accessToken,据源码)
- Tag:kms文件模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| originType | query | int | 否 | 文件来源类型(不传则统计全部来源) |
请求示例¶
响应¶
结构:统一 Resource。
data:Integer,文件上传数量。
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
响应¶
结构:统一 Resource。
data:更新后的 FileEntity。
失败示例(内部异常,据源码 catch 显式返回):