帮你快速理解、总结文档立即下载

目录或相簿

最近更新时间:2026-09-30 16:51:33
本文档已由 AI 辅助审校
我的收藏

前期准备

开始操作前,确保您已经完成了 SDK 初始化。如果您还没有初始化 SDK,请先参考快速入门文档完成。
注意:
如果媒体库启用回收站功能,删除目录时会将目录及其下的文件移入回收站而非永久删除。
当目录内容较多时,复制操作会以异步方式执行,返回任务 ID。

列出目录内容

列出目录内容(marker 翻页,推荐)

ListDirectory 用于获取指定目录下的所有文件和子目录,推荐使用 marker 方式翻页。
// 使用 marker/limit 分页查询(推荐)
ctx := context.Background()

resp, httpRes, err := apiClient.DirectoryAPI.ListDirectory(ctx, "your-library-id", "your-space-id", "/images").
ByMarker(1).
Limit(20).
OrderBy("creationTime").
OrderByType("desc").
Filter("onlyFile").
SortType("union").
WithInode(1).
WithFavoriteStatus(1).
AccessToken("your-access-token").
UserId("user-id").
Execute()
if err != nil {
panic(err)
}
if httpRes.StatusCode == 200 {
for _, item := range resp.Contents {
fmt.Println(*item.Name)
}
}

// 获取下一页:将上一次响应中的 nextMarker 作为 marker 传入
if resp.NextMarker != nil {
resp2, _, err := apiClient.DirectoryAPI.ListDirectory(ctx, "your-library-id", "your-space-id", "/images").
ByMarker(1).
Marker(*resp.NextMarker).
Limit(20).
AccessToken("your-access-token").
Execute()
if err != nil {
panic(err)
}
fmt.Printf("下一页条目数: %d\\n", len(resp2.Contents))
}
参数说明:
参数名
参数描述
类型
是否必填
libraryId
媒体库 ID
String
是
spaceId
空间 ID
String
是
dirPath
目录路径,对于多级目录,使用斜杠(/)分隔,例如 foo/bar
String
是
marker
用于顺序列出分页的标识,不传/为空则默认第一页
String
否
limit
用于顺序列出分页时本地列出的项目数限制,不传默认 20,最大 1000
int32
否
orderBy
排序字段,可选值:name、modificationTime、size、creationTime、localCreationTime
String
否
orderByType
排序方式,升序为 asc,降序为 desc
String
否
filter
筛选方式,不传返回全部,onlyDir 只返回文件夹,onlyFile 只返回文件
String
否
sortType
排序方式,不传则文件和文件夹单独排序,先返回文件夹后返回文件。union 文件和文件夹拉通排序
String
否
withInode
是否返回 inode(文件目录 ID),0 或 1,默认不返回
int32
否
withFavoriteStatus
是否返回收藏状态,0 或 1,默认不返回
int32
否
userId
用户身份识别,当访问令牌对应的权限为管理员权限且申请访问令牌时的用户身份识别为空时用来临时指定用户身份
String
否
返回值说明:
HTTP 状态码:200,获取成功,返回目录内容列表。
字段
说明
类型
contents
目录内容列表
Array
nextMarker
用于顺序列出分页的标识,为空表示已翻页完毕
String

列出目录内容(传统分页,不推荐)

ListDirectoryByPage 用于获取指定目录下的所有文件和子目录,使用传统分页方式。不推荐使用,建议使用 marker 方式翻页。
// 使用 page/pageSize 分页查询(不推荐,page × pageSize 最大翻页条目数为 1 万)
ctx := context.Background()

resp, httpRes, err := apiClient.DirectoryAPI.ListDirectoryByPage(ctx, "your-library-id", "your-space-id", "/images").
ByPage(1).
Page(1).
PageSize(20).
OrderBy("creationTime").
OrderByType("desc").
Filter("onlyFile").
SortType("union").
AccessToken("your-access-token").
UserId("user-id").
Execute()
if err != nil {
panic(err)
}
if httpRes.StatusCode == 200 {
fmt.Printf("总数: %d, 文件数: %d, 子目录数: %d\\n",
*resp.TotalNum, *resp.FileCount, *resp.SubDirCount)
for _, item := range resp.Contents {
fmt.Println(*item.Name)
}
}
参数说明:
参数名
参数描述
类型
是否必填
libraryId
媒体库 ID
String
是
spaceId
空间 ID
String
是
dirPath
目录路径,对于多级目录,使用斜杠(/)分隔,例如 foo/bar
String
是
page
页码,不传默认 1
int32
否
pageSize
每页数量,不传默认 20;page × pageSize 的最大翻页条目数为 1 万
int32
否
orderBy
排序字段,可选值:name、modificationTime、size、creationTime、localCreationTime
String
否
orderByType
排序方式,升序为 asc,降序为 desc
String
否
filter
筛选方式,不传返回全部,onlyDir 只返回文件夹,onlyFile 只返回文件
String
否
sortType
排序方式,不传则文件和文件夹单独排序,先返回文件夹后返回文件。union 文件和文件夹拉通排序
String
否
withInode
是否返回 inode(文件目录 ID),0 或 1,默认不返回
int32
否
withFavoriteStatus
是否返回收藏状态,0 或 1,默认不返回
int32
否
userId
用户身份识别,当访问令牌对应的权限为管理员权限且申请访问令牌时的用户身份识别为空时用来临时指定用户身份
String
否
返回值说明:
HTTP 状态码:200,获取成功,返回目录内容列表。
字段
说明
类型
fileCount
当前目录文件数量
Int32
subDirCount
当前目录子目录数量
Int32
totalNum
条目总数
Int32
contents
目录内容列表
Array

目录信息

查看目录详情

InfoFileOrDirectory 用于获取指定路径的详细信息,可同时用于查看文件或文件夹详情。
// 获取目录详情
ctx := context.Background()

resp, httpRes, err := apiClient.DirectoryAPI.InfoFileOrDirectory(ctx, "your-library-id", "your-space-id", "/documents").
Info(1).
WithInode(1).
WithFavoriteStatus(1).
AccessToken("your-access-token").
Execute()
if err != nil {
panic(err)
}
if httpRes.StatusCode == 200 {
fmt.Printf("名称: %s, 类型: %s\\n", *resp.Name, *resp.Type)
}
参数说明:
参数名
参数描述
类型
是否必填
libraryId
媒体库 ID
String
是
spaceId
空间 ID
String
是
path
文件或目录路径
String
是
info
获取详细信息标志,固定值为 1
float32
是
withInode
是否返回 inode(文件目录 ID),0 或 1,默认不返回
int32
否
withFavoriteStatus
是否返回收藏状态,0 或 1,默认不返回
int32
否
返回值说明:
HTTP 状态码:200,查询成功,返回文件或目录详情。
字段
说明
类型
path
完整路径
Array
inode
文件或目录 ID
String
name
文件或目录名
String
type
条目类型(dir/file/image/video/symlink/virtual)
String
userId
创建人 ID
String
creationTime
创建时间
String
modificationTime
修改时间
String
contentType
媒体类型
String
size
文件大小
String
eTag
ETag
String
isFavorite
是否收藏
Boolean
crc64
CRC64 校验值
String
versionId
版本号
Integer
metaData
元数据
Object
labels
标签列表
Array
category
自定义分类
String

检查目录状态

CheckDirectoryStatus 用于检查指定目录是否存在。
ctx := context.Background()

httpRes, err := apiClient.DirectoryAPI.CheckDirectoryStatus(ctx, "your-library-id", "your-space-id", "/documents").
AccessToken("your-access-token").
UserId("user-id").
Execute()
if err != nil {
panic(err)
}
if httpRes.StatusCode == 200 {
fmt.Println("目录存在")
}
参数说明:
参数名
参数描述
类型
是否必填
libraryId
媒体库 ID
String
是
spaceId
空间 ID
String
是
dirPath
目录路径
String
是
userId
用户身份识别
String
否
返回值说明:
HTTP 状态码:200,目录存在。

查询目录统计数据

GetDirectoryStats 用于获取指定目录下的文件总大小、文件数量以及子目录数量,支持查询普通目录、回收站目录以及历史版本的统计量。
ctx := context.Background()

resp, httpRes, err := apiClient.DirectoryAPI.GetDirectoryStats(ctx, "your-library-id", "your-space-id", "/documents").
Stats(1).
StatsType("normal").
AccessToken("your-access-token").
UserId("user-id").
Execute()

if err != nil {
panic(err)
}

fmt.Printf("Directory stats retrieved successfully: %d\\n", httpRes.StatusCode)
if resp.Storage != nil {
fmt.Printf("Storage: %d bytes\\n", *resp.Storage)
}
参数说明:
参数名
类型
必填
说明
libraryId
string
是
媒体库 ID
spaceId
string
是
空间 ID,如果媒体库为单租户模式,则该参数固定为连字符(-);如果媒体库为多租户模式,则必须指定该参数
filePath
string
是
目录路径
stats
int32
是
固定值为 1,表示查询目录统计数据
statsType
string
是
统计类型,normal 表示普通目录统计量,recycle 表示回收站目录统计量,history 表示目录的历史版本统计量
recycledId
string
否
回收站项目 ID,查询回收站的统计量时,为必选参数(根目录除外)
accessToken
string
否
访问令牌,对于公有读媒体库或租户空间,可不指定该参数,否则必须指定该参数
librarySecret
string
否
访问媒体库密钥,可选参数
userId
string
否
用户身份识别,当访问令牌对应的权限为管理员权限且申请访问令牌时的用户身份识别为空时用来临时指定用户身份,详情请参阅生成访问令牌接口
返回值说明:
HTTP 状态码:200,查询成功,返回目录统计信息。
响应示例:
{
"userId": "user123",
"statsType": "normal",
"storage": 5558728615,
"fileCount": 1024,
"dirCount": 50
}
响应字段说明:
字段
说明
类型
userId
创建人 ID
String
statsType
查询类型
String
storage
目录下所有文件总大小(字节),包含子目录文件;查询类型为历史版本时,为目录下所有文件历史版本总大小(字节)
Int64
fileCount
目录下所有文件数量,包含子目录文件;查询类型为历史版本时,为目录下所有文件的历史版本个数
Int64
dirCount
目录下所有子目录数量;查询类型为历史版本时,该值始终为 0
Int64

目录管理

创建目录

CreateDirectory 用于在指定路径创建新的目录,会自动创建中间所需的各级父目录。
ctx := context.Background()

meta := map[string]string{
"department": "engineering",
"project": "sdk-v2",
}
createDirBody := client.CreateDirectoryRequest{
MetaData: &meta,
Labels: []string{"重要", "项目文档"},
LocalCreationTime: client.PtrTime(time.Now()),
LocalModificationTime: client.PtrTime(time.Now()),
}

resp, httpRes, err := apiClient.DirectoryAPI.CreateDirectory(ctx, "your-library-id", "your-space-id", "/project-docs").
ConflictResolutionStrategy("rename").
WithInode(1).
CreateDirectoryRequest(createDirBody).
AccessToken("your-access-token").
Execute()
if err != nil {
panic(err)
}
if httpRes.StatusCode == 201 {
fmt.Printf("目录创建成功: %v\\n", resp.Path)
}
参数说明:
参数名
参数描述
类型
是否必填
libraryId
媒体库 ID
String
是
spaceId
空间 ID
String
是
dirPath
目录路径
String
是
conflictResolutionStrategy
最后一级目录冲突时的处理方式,ask: 冲突时返回 HTTP 409,rename: 冲突时自动重命名,默认为 ask
String
否
withInode
是否返回 inode(文件目录 ID),0 或 1,默认不返回
int32
否
userId
用户身份识别
String
否
createDirectoryRequest
可选的请求体,用于指定目录的元数据信息
CreateDirectoryRequest
否
createDirectoryRequest 对象说明:
字段
参数描述
类型
是否必填
metaData
自定义元数据键值对,key 为小写字符串
map[string]string
否
labels
目录标签列表
[]string
否
localCreationTime
目录对应的本地创建时间
time.Time
否
localModificationTime
目录对应的本地修改时间
time.Time
否
返回值说明:
HTTP 状态码:201,创建成功。
字段
说明
类型
path
最终的目录或相簿路径,可能因自动重命名与指定路径不同
Array
inode
最后一级文件目录 ID(withInode=1 时返回)
String
creationTime
目录创建时间
Time
metaData
自定义元数据
Object
labels
标签列表
Array
localCreationTime
本地创建时间
Time
localModificationTime
本地修改时间
Time

复制目录

CopyDirectory 用于将目录复制到目标路径,会自动创建中间所需的各级父目录。当目录内容较多时以异步方式复制。
// 复制(目录内容较多时可能转为异步任务)
ctx := context.Background()

resp202, resp200, httpRes, err := apiClient.DirectoryAPI.CopyDirectory(ctx, "your-library-id", "your-space-id", "/dest/images").
ConflictResolutionStrategy("ask").
CopyDirectoryRequest(client.CopyDirectoryRequest{
CopyFrom: "/source/images",
}).
AccessToken("your-access-token").
UserId("user-id").
Execute()
if err != nil {
panic(err)
}
switch httpRes.StatusCode {
case 200:
fmt.Printf("同步复制成功,最终路径: %v\\n", resp200.Path)
case 202:
fmt.Printf("已转为异步复制任务,taskId: %d\\n", *resp202.TaskId)
case 204:
fmt.Println("同步复制成功")
}
参数说明:
参数名
参数描述
类型
是否必填
libraryId
媒体库 ID
String
是
spaceId
空间 ID
String
是
dirPath
目标目录路径
String
是
conflictResolutionStrategy
最后一级目录冲突时的处理方式,ask 或 rename,默认为 ask
String
否
userId
用户身份识别
String
否
copyDirectoryRequest
复制目录请求对象
CopyDirectoryRequest
是
copyDirectoryRequest 对象说明:
字段
参数描述
类型
是否必填
copyFrom
被复制的源目录或相簿路径
String
是
返回值说明:
HTTP 状态码 202:目录内容较多,以异步方式复制,返回 taskId。
HTTP 状态码 204:同步复制成功(conflictResolutionStrategy 为 ask)。
HTTP 状态码 200:同步复制成功(conflictResolutionStrategy 为 rename),返回最终路径。

重命名或移动目录

MoveDirectory 用于将目录移动到目标路径或重命名目录,可跨越多层级多目录。
ctx := context.Background()

resp, httpRes, err := apiClient.DirectoryAPI.MoveDirectory(ctx, "your-library-id", "your-space-id", "/dest/images").
ConflictResolutionStrategy("ask").
MoveDirectoryRequest(client.MoveDirectoryRequest{
From: "/source/images",
}).
AccessToken("your-access-token").
UserId("user-id").
Execute()
if err != nil {
panic(err)
}
switch httpRes.StatusCode {
case 200:
fmt.Printf("同步移动成功,最终路径: %v\\n", resp.Path)
case 204:
fmt.Println("同步移动成功")
}
参数说明:
参数名
参数描述
类型
是否必填
libraryId
媒体库 ID
String
是
spaceId
空间 ID
String
是
dirPath
目标目录路径
String
是
conflictResolutionStrategy
最后一级目录冲突时的处理方式,ask 或 rename,默认为 ask
String
否
userId
用户身份识别
String
否
moveDirectoryRequest
移动目录请求对象
MoveDirectoryRequest
是
moveDirectoryRequest 对象说明:
字段
参数描述
类型
是否必填
from
源目录路径
String
是
返回值说明:
HTTP 状态码 204:同步移动成功(conflictResolutionStrategy 为 ask)。
HTTP 状态码 200:同步移动成功(conflictResolutionStrategy 为 rename),返回最终路径。

删除目录

DeleteDirectory 用于删除指定目录及其下的所有文件。如果媒体库启用回收站功能,则移入回收站而非永久删除。
// 移入回收站
ctx := context.Background()

resp, httpRes, err := apiClient.DirectoryAPI.DeleteDirectory(ctx, "your-library-id", "your-space-id", "/old-folder").
Permanent(0).
AccessToken("your-access-token").
UserId("user-id").
Execute()
if err != nil {
panic(err)
}
if httpRes.StatusCode == 200 && resp.RecycledItemId != nil {
fmt.Printf("目录已移入回收站,回收站项目 ID: %d\\n", *resp.RecycledItemId)
} else if httpRes.StatusCode == 204 {
fmt.Println("目录已永久删除")
}
参数说明:
参数名
参数描述
类型
是否必填
libraryId
媒体库 ID
String
是
spaceId
空间 ID
String
是
dirPath
目录路径
String
是
permanent
当媒体库开启回收站时,1: 永久删除,0: 移入回收站,默认为 0
int32
否
userId
用户身份识别
String
否
返回值说明:
HTTP 状态码 204:删除成功(未开启回收站)。
HTTP 状态码 200:删除成功(开启回收站),返回回收站项目 ID。
字段
说明
类型
recycledItemId
回收站项目 ID
Number

修正目录统计数据

CalibrateDirectoryStats 用于修正指定目录的统计数据(异步执行,返回 taskId,可通过任务管理接口查询执行结果)。
ctx := context.Background()

resp, httpRes, err := apiClient.DirectoryAPI.CalibrateDirectoryStats(ctx, "your-library-id", "your-space-id", "/documents").
Calibrate(1).
StatsType("normal").
AccessToken("your-access-token").
Execute()
if err != nil {
panic(err)
}

if httpRes.StatusCode == 200 && resp.TaskId != nil {
fmt.Printf("校准任务已提交,taskId: %d\\n", *resp.TaskId)
}
参数说明:
参数名
参数描述
类型
是否必填
libraryId
媒体库 ID
string
是
spaceId
空间 ID,如果媒体库为单租户模式,则该参数固定为连字符(-);如果媒体库为多租户模式,则必须指定该参数
string
是
filePath
目录路径
string
是
calibrate
固定值为 1,表示修正目录统计数据
int32
是
statsType
统计类型,normal 表示普通目录统计量,recycle 表示回收站目录统计量,history 表示目录的历史版本统计量
string
是
recycledId
回收站项目 ID,查询回收站的统计量时,为必选参数(根目录除外)
string
否
accessToken
访问令牌
string
否
userId
用户身份识别
string
否
返回值说明:
HTTP 状态码:200,返回 taskId(int64),异步任务,可通过任务管理接口查询执行结果。

标签与分类

更新目录标签

UpdateDirectoryLabels 用于更新目录的标签信息。
ctx := context.Background()

httpRes, err := apiClient.DirectoryAPI.UpdateDirectoryLabels(ctx, "your-library-id", "your-space-id", "/documents").
Update(1).
UpdateDirectoryLabelsRequest(client.UpdateDirectoryLabelsRequest{
Labels: []string{"tag1", "tag2", "important"},
}).
AccessToken("your-access-token").
Execute()
if err != nil {
panic(err)
}
if httpRes.StatusCode == 204 {
fmt.Println("目录标签更新成功")
}
参数说明:
参数名
参数描述
类型
是否必填
libraryId
媒体库 ID
String
是
spaceId
空间 ID
String
是
dirPath
目录路径
String
是
update
固定为 1
float32
是
updateDirectoryLabelsRequest
更新目录标签请求对象
UpdateDirectoryLabelsRequest
否
updateDirectoryLabelsRequest 对象说明:
字段
参数描述
类型
是否必填
labels
文件标签列表
[]string
否
metaData
自定义元数据
map[string]string
否
metaDataDirective
元数据更新策略,merge: 合并,replace: 替换
String
否
返回值说明:
HTTP 状态码:204,更新成功,无响应体。

更新文件标签或分类

UpdateFileLabels 用于更新文件的标签(Labels)或分类(Category)。
// 更新文件标签和分类
ctx := context.Background()

httpRes, err := apiClient.DirectoryAPI.UpdateFileLabels(ctx, "your-library-id", "your-space-id", "/text.txt").
Update(1).
UpdateFileLabelsRequest(client.UpdateFileLabelsRequest{
Labels: []string{"动物", "大象", "亚洲象"},
Category: client.PtrString("image"),
LocalCreationTime: client.PtrTime(time.Now()),
LocalModificationTime: client.PtrTime(time.Now()),
}).
AccessToken("your-access-token").
Execute()
if err != nil {
panic(err)
}
if httpRes.StatusCode == 204 {
fmt.Println("文件标签更新成功")
}
参数说明:
参数名
参数描述
类型
是否必填
libraryId
媒体库 ID
String
是
spaceId
空间 ID
String
是
path
文件路径
String
是
update
固定为 1
float32
是
updateFileLabelsRequest
更新文件标签请求对象
UpdateFileLabelsRequest
是
updateFileLabelsRequest 对象说明:
字段
参数描述
类型
是否必填
labels
文件标签列表
[]string
否
category
文件自定义的分类,最大长度 16 字节
String
否
metaData
自定义元数据
map[string]string
否
metaDataDirective
元数据更新策略,merge: 合并,replace: 替换
String
否
localCreationTime
文件对应的本地创建时间
time.Time
否
localModificationTime
文件对应的本地修改时间
time.Time
否
contentType
媒体类型
String
否
size
虚拟文件大小(字节)
String
否
返回值说明:
HTTP 状态码:204,更新成功,无响应体。