文件管理
文件列表、详情、删除与批量操作接口。
所有文件管理端点均要求 Bearer 认证,并遵循「用户只能操作自己的文件」原则(管理员端点除外)。
文件对象结构
interface File {
id: string
user_id: string
album_id: string | null
storage_config_id: string
original_name: string // 用户上传时的原始文件名
storage_key: string // 存储后端的 key
hash_md5: string
size_bytes: number
mime_type: string
file_type: "image" | "video" | "audio" | "file"
width: number | null // 仅图片
height: number | null // 仅图片
duration: number | null // 仅视频/音频,秒
url: string // 短链相对路径(/i/xxx)
thumb_url: string | null
source_url: string | null // 存储后端直链(可选)
is_deleted: boolean
created_at: string // ISO 8601
}
列表
Endpoint
GET · /api/v1/files · 需认证
返回当前用户的文件。管理员调用时返回全站文件。
查询参数
| 参数 | 类型 | 说明 |
|---|---|---|
page | int | 页码(默认 1) |
size | int | 每页(默认 20,最大 100) |
album_id | string | 按相册筛选 |
file_type | string | image / video / audio / file |
keyword | string | 按 original_name 模糊搜索 |
order_by | string | created_at / size_bytes / original_name |
order | string | ASC / DESC |
响应
{
"code": 0,
"data": {
"items": [
{
"id": "file-uuid",
"user_id": "user-uuid",
"original_name": "photo.jpg",
"size_bytes": 245760,
"mime_type": "image/jpeg",
"file_type": "image",
"url": "https://kite.your-domain.com/i/a1b2c3d4",
"thumb_url": "https://kite.your-domain.com/t/a1b2c3d4",
"source_url": "https://cdn.example.com/2026/04/a1b2c3d4/uuid.jpg",
"created_at": "2026-04-17T10:00:00Z"
}
],
"total": 128,
"page": 1,
"size": 20
}
}
详情
Endpoint
GET · /api/v1/files/:id · 需认证
响应
{
"code": 0,
"data": {
"id": "file-uuid",
"original_name": "photo.jpg",
"mime_type": "image/jpeg",
"file_type": "image",
"size_bytes": 245760,
"hash_md5": "a1b2c3d4e5f6...",
"width": 1920,
"height": 1080,
"url": "/i/a1b2c3d4",
"thumb_url": "/t/a1b2c3d4",
"created_at": "2026-04-17T10:00:00Z"
}
}
错误
| Code | 条件 |
|---|---|
40400 | 文件不存在 |
删除
Endpoint
DELETE · /api/v1/files/:id · 需认证
删除一条文件记录。若该文件的 MD5 没有其他用户引用,同时会从存储后端删除实际字节。
错误
| Code | 条件 |
|---|---|
40300 | 非文件所有者 |
40400 | 文件不存在 |
批量删除
Endpoint
POST · /api/v1/files/batch-delete · 需认证
请求
{
"ids": ["file-uuid-1", "file-uuid-2", "file-uuid-3"]
}
响应
全部成功:
{
"code": 0,
"data": { "deleted": 3 }
}
部分失败:
{
"code": 0,
"data": {
"deleted": 2,
"errors": [
"file-uuid-3: not the owner of this file"
]
}
}
批量操作不会因单条失败而中断,每条独立处理后汇总。
公开文件广场
Endpoint
GET · /api/v1/public/files · 无需认证
仅当 allow_public_gallery = true 时可用。返回全站公开文件,不区分用户。
查询参数
| 参数 | 说明 |
|---|---|
page | 页码(默认 1) |
size | 每页(默认 24,最大 100) |
file_type | image / video / audio / file |
响应
结构与 /files 相同。
错误
| HTTP | Code | 条件 |
|---|---|---|
403 | 40300 | 广场未开启 |
公开统计
Endpoint
GET · /api/v1/public/stats · 无需认证
返回全站公开统计,供前台展示。
{
"code": 0,
"data": {
"total_files": 12450,
"total_size": 83952386048,
"images": 10023,
"videos": 431,
"audios": 86
}
}
用户统计
Endpoint
GET · /api/v1/stats · 需认证
返回包含用户总数在内的详细统计,需要 Bearer Token(非管理员也可调用)。
{
"code": 0,
"data": {
"users": 12,
"total_files": 12450,
"total_size": 83952386048,
"images": 10023,
"videos": 431,
"audios": 86,
"others": 1910
}
}