前期准备
开始操作前,确保您已经完成了 SDK 初始化。如果您还没有初始化 SDK,请先参考快速入门文档完成。
注意事项:
若您使用回收站管理功能,需要具有相应空间的读权限。
恢复回收站项目需要 admin、space_admin 或 restore_recycled 权限。
永久删除回收站项目需要 admin、space_admin 或 delete_recycled 权限。
清空回收站时,回收站内的文件将首先在回收站内不可见,删除和释放空间的操作将异步执行。
列出回收站项目(marker 翻页,推荐)
RecycleList 实现查看回收站列表,使用 marker/limit 方式进行分页,推荐使用。ctx := context.Background()resp, httpRes, err := apiClient.RecycledAPI.RecycleList(ctx, "your-library-id", "your-space-id").AccessToken("your-access-token").ByMarker(1).Limit(10).OrderBy("removalTime").OrderByType("desc").UserId("user-id").Execute()if err != nil {panic(err)}for _, item := range resp.Contents {if item.Name != nil && item.RemainingTime != nil {fmt.Printf("Item: %s, Remaining days: %d\\n", *item.Name, *item.RemainingTime)}}
参数说明:
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID | String | 是 |
accessToken | 访问令牌 | String | 否 |
byMarker | marker 翻页标志,固定值为 1 | Int32 | 是 |
marker | 用于顺序列出分页的标识 | String | 否 |
limit | 分页限制,取值范围 [1, 100],默认 20 | Int32 | 否 |
orderBy | 排序字段:name(按名称)、modificationTime(按修改时间)、size(按大小)、removalTime(按删除时间)、remainingTime(按剩余时间) | String | 否 |
orderByType | 排序方式:asc 升序,desc 降序 | String | 否 |
userId | 用户身份识别 | String | 否 |
返回值说明:
HTTP 状态码:200,获取成功,返回回收站项目列表。
响应字段说明:
字段 | 说明 | 类型 |
nextMarker | 用于顺序列出分页的标识,为空表示已翻页完毕 | String |
contents | 回收站项目列表 | Array |
contents 数组元素说明:
字段 | 说明 | 类型 |
recycledItemId | 回收站 ID | int64 |
originalPath | 原始路径 | Array |
spaceId | 空间 ID | String |
size | 文件大小,字符串格式 | String |
previewByDoc | 是否可通过 WPS 预览 | Boolean |
previewByCI | 是否可通过万象预览 | Boolean |
previewAsIcon | 是否可用预览图当做 icon | Boolean |
fileType | 文件类型 | String |
name | 文件名 | String |
type | 条目类型:dir、file、image、video | String |
creationTime | 创建时间 | String |
modificationTime | 修改时间 | String |
removalTime | 删除时间 | String |
remainingTime | 剩余天数 | Integer |
列出回收站项目(page 翻页,不推荐)
RecycleListByPage 使用传统分页方式查看回收站列表,不建议深翻页。ctx := context.Background()resp, httpRes, err := apiClient.RecycledAPI.RecycleListByPage(ctx, "your-library-id", "your-space-id").AccessToken("your-access-token").ByPage(1).Page(1).PageSize(20).OrderBy("name").OrderByType("asc").UserId("user-id").Execute()if err != nil {panic(err)}fmt.Printf("Total: %d\\n", resp.GetTotalNum())for _, item := range resp.Contents {if item.Name != nil && item.RemainingTime != nil {fmt.Printf("Item: %s, Remaining days: %d\\n", *item.Name, *item.RemainingTime)}}
参数说明:
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID | String | 是 |
accessToken | 访问令牌 | String | 否 |
byPage | page 翻页标志,固定值为 1 | Int32 | 是 |
page | 页码,默认 1 | Int32 | 否 |
pageSize | 每页数量,取值范围 [1, 100],默认 20 | Int32 | 否 |
orderBy | 排序字段:name 按名称,time 按时间 | String | 否 |
orderByType | 排序方式:asc 升序,desc 降序 | String | 否 |
userId | 用户身份识别 | String | 否 |
返回值说明:
HTTP 状态码:200,获取成功。
响应字段说明:
字段 | 说明 | 类型 |
totalNum | 回收站所有文件和文件夹总数 | Integer |
contents | 回收站项目列表 | Array |
查看回收站文件详情
RecycleInfo 实现获取回收站项目的详细信息。ctx := context.Background()resp, httpRes, err := apiClient.RecycledAPI.RecycleInfo(ctx, "your-library-id", "your-space-id", 123).AccessToken("your-access-token").Info(1).Execute()if err != nil {panic(err)}fmt.Printf("File type: %s\\n", *resp.Type)fmt.Printf("File size: %s bytes\\n", *resp.Size)fmt.Printf("Cos URL: %s\\n", *resp.CosUrl)
参数说明:
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID | String | 是 |
recycledItemId | 回收站项目 ID | int64 | 是 |
accessToken | 访问令牌 | String | 否 |
info | 获取文件详情,固定值为 1 | float32 | 是 |
返回值说明:
HTTP 状态码:200,获取成功,返回文件详情(包含 cosUrl、contentType、size、crc64、metaData、labels 等字段)。
预览回收站项目
RecyclePreview 实现预览回收站中的文档、图片、视频等文件。ctx := context.Background()resp, httpRes, err := apiClient.RecycledAPI.RecyclePreview(ctx, "your-library-id", "your-space-id", 123).AccessToken("your-access-token").Preview(1).Type_("pic").Size(128).Execute()if err != nil {panic(err)}fmt.Printf("Preview request completed: %d\\n", httpRes.StatusCode)
参数说明:
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID | String | 是 |
recycledItemId | 回收站项目 ID | int64 | 是 |
accessToken | 访问令牌 | String | 否 |
preview | 预览标志,固定值为 1 | float32 | 是 |
type_ | 文档预览方式,pic 以 JPG 格式预览,否则以 HTML 格式 | String | 否 |
size | 图片或视频封面的缩放大小 | Int32 | 否 |
scale | 等比例缩放百分比 | Int32 | 否 |
widthSize | 缩放宽度 | Int32 | 否 |
heightSize | 缩放高度 | Int32 | 否 |
frameNumber | gif 文件降帧的帧数 | Int32 | 否 |
返回值说明:
HTTP 状态码:200,获取成功,返回预览 URL(响应 url 字段;服务端到实际预览地址的跳转由 SDK/HTTP 层处理)。
恢复指定回收站项目
RecycleRestore 实现恢复指定回收站项目。需要 admin、space_admin 或 restore_recycled 权限。ctx := context.Background()resp, httpRes, err := apiClient.RecycledAPI.RecycleRestore(ctx, "your-library-id", "your-space-id", 123).AccessToken("your-access-token").Restore(1).ConflictResolutionStrategy("rename").RestorePathStrategy("fallbackToRoot").Execute()if err != nil {panic(err)}fmt.Printf("Item restored to: %v\\n", resp.Path)
参数说明:
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID | String | 是 |
recycledItemId | 回收站项目 ID | int64 | 是 |
accessToken | 访问令牌 | String | 否 |
restore | 恢复标志,固定值为 1 | float32 | 是 |
conflictResolutionStrategy | 路径冲突处理方式:ask、rename、overwrite | String | 否 |
restorePathStrategy | 恢复路径策略:originalPath、fallbackToRoot | String | 否 |
userId | 用户身份识别 | String | 否 |
返回值说明:
HTTP 状态码:200,恢复成功,返回最终文件路径。
批量恢复回收站项目
RecycleRestoreBatch 实现批量恢复回收站项目。ctx := context.Background()itemIds := []int64{123, 456, 789}resp200, resp202, resp207, httpRes, err := apiClient.RecycledAPI.RecycleRestoreBatch(ctx, "your-library-id", "your-space-id").AccessToken("your-access-token").Restore(1).RecycleRestoreBatchRequest(itemIds).RestorePathStrategy("fallbackToRoot").Execute()if err != nil {panic(err)}switch httpRes.StatusCode {case 200:fmt.Printf("All items restored successfully\\n")case 202:fmt.Printf("Restore task accepted, taskId: %d\\n", *resp202.TaskId)case 207:fmt.Printf("Partial success\\n")}
参数说明:
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID | String | 是 |
accessToken | 访问令牌 | String | 否 |
restore | 恢复标志,固定值为 1 | float32 | 是 |
restorePathStrategy | 恢复路径策略:originalPath、fallbackToRoot | String | 否 |
userId | 用户身份识别 | String | 否 |
recycleRestoreBatchRequest | 回收站项目 ID 列表 | []Int64 | 是 |
返回值说明:
HTTP 状态码 200:同步恢复全部成功。
HTTP 状态码 202:异步方式恢复,返回 taskId。
HTTP 状态码 207:部分或全部执行失败。
永久删除指定回收站项目
RecyclePurge 实现永久删除指定回收站项目。删除后无法恢复。ctx := context.Background()httpRes, err := apiClient.RecycledAPI.RecyclePurge(ctx, "your-library-id", "your-space-id", 123).AccessToken("your-access-token").Execute()if err != nil {panic(err)}fmt.Printf("Item purged successfully: %d\\n", httpRes.StatusCode)
参数说明:
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID | String | 是 |
recycledItemId | 回收站项目 ID | int64 | 是 |
accessToken | 访问令牌 | String | 否 |
userId | 用户身份识别 | String | 否 |
返回值说明:
HTTP 状态码:204,删除成功,无响应体。
批量永久删除回收站项目
RecyclePurgeBatch 实现批量永久删除回收站项目。ctx := context.Background()itemIds := []int64{123, 456, 789}httpRes, err := apiClient.RecycledAPI.RecyclePurgeBatch(ctx, "your-library-id", "your-space-id").AccessToken("your-access-token").Delete(1).RecyclePurgeBatchRequest(itemIds).Execute()if err != nil {panic(err)}fmt.Printf("Items purged successfully: %d\\n", httpRes.StatusCode)
参数说明:
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID | String | 是 |
accessToken | 访问令牌 | String | 否 |
delete | 永久删除标志,固定值为 1 | float32 | 是 |
userId | 用户身份识别 | String | 否 |
recyclePurgeBatchRequest | 回收站项目 ID 列表 | []Int64 | 是 |
返回值说明:
HTTP 状态码:204,删除成功,无响应体。
设置回收站生命周期
RecycleSetLifecycle 实现设置回收站生命周期。ctx := context.Background()lifecycleReq := *client.NewRecycleSetLifecycleRequest(30)httpRes, err := apiClient.RecycledAPI.RecycleSetLifecycle(ctx, "your-library-id", "your-space-id").AccessToken("your-access-token").Lifecycle(1).RecycleSetLifecycleRequest(lifecycleReq).Execute()if err != nil {panic(err)}fmt.Printf("Lifecycle set successfully: %d\\n", httpRes.StatusCode)
参数说明:
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID | String | 是 |
accessToken | 访问令牌 | String | 否 |
lifecycle | 设置回收站生命周期标志,固定值为 1 | float32 | 是 |
recycleSetLifecycleRequest | 生命周期设置对象 | RecycleSetLifecycleRequest | 是 |
recycleSetLifecycleRequest 对象说明:
字段 | 参数描述 | 类型 | 是否必填 |
retentionDays | 回收站保留天数,取值范围:0 < retentionDays ≤ 10000 | Int32 | 是 |
返回值说明:
HTTP 状态码:204,修改成功,无响应体。
清空回收站
RecycleEmpty 实现清空回收站。回收站内的文件将首先在回收站内不可见,删除和释放空间的操作将异步执行。ctx := context.Background()httpRes, err := apiClient.RecycledAPI.RecycleEmpty(ctx, "your-library-id", "your-space-id").AccessToken("your-access-token").Execute()if err != nil {panic(err)}fmt.Printf("Recycle bin emptied successfully: %d\\n", httpRes.StatusCode)
参数说明:
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID | String | 是 |
accessToken | 访问令牌 | String | 否 |
userId | 用户身份识别 | String | 否 |
返回值说明:
HTTP 状态码:204,删除成功,无响应体。