/files/{id}/copy
复制文件到指定目标文件夹,在MinIO中执行服务端复制(CopyObject)避免数据搬运,支持自定义新文件名。复制失败时自动回滚。参考:GDPR Art 32 (Security of Processing)。
Request Parameters
| Name | In | Type | Required | Default | Example | Constraints | Description |
|---|---|---|---|---|---|---|---|
id |
path |
string |
Yes | 源文件ID |
Request Body
Schema: dto.CopyFileTargetRequest
| Field | Type | Required | Example | Constraints | Description |
|---|---|---|---|---|---|
new_name |
string |
No | copy-of-file.pdf |
||
target_folder_id |
string |
No | 01ARZ3NDEKTSV4RRFFQ69G5FAV |
Responses
| Status | Description | Schema |
|---|---|---|
| 200 | 复制结果,返回源文件和新文件的元数据 | dto.FileCopyResultDetailResponse |
| 400 | 参数验证失败 | dto.Problem |
| 401 | 未认证或令牌已过期 | dto.Problem |
| 404 | 源文件或目标文件夹不存在 | dto.Problem |
| 500 | 服务器内部错误 | dto.Problem |
Referenced Schemas
dto.FieldViolation
| Field | Type | Required | Example | Constraints | Description |
|---|---|---|---|---|---|
code |
string |
No | Code 是错误代码(可选) 用于程序识别错误类型,如 "required", "format", "range" | ||
description |
string |
No | Description 是人类可读的错误描述 应该说明违反了什么规则,如 "必须是一个有效的邮箱地址" | ||
field |
string |
No | Field 是错误字段的路径 使用点号表示嵌套字段,如 "user.email" 或 "addresses[0].city" | ||
value |
object |
No | Value 是导致错误的值(可选,开发模式下使用) 生产环境可能不返回此字段以避免泄露敏感信息 |
dto.FileCopyResultDetailResponse
| Field | Type | Required | Example | Constraints | Description |
|---|---|---|---|---|---|
code |
integer |
No | |||
data |
dto.FileCopyResultResponse |
No | |||
message |
string |
No | |||
timestamp |
string |
No |
dto.FileCopyResultResponse
| Field | Type | Required | Example | Constraints | Description |
|---|---|---|---|---|---|
copied_file |
dto.FileMetadataResponse |
No | |||
original_file |
dto.FileMetadataResponse |
No |
dto.FileMetadataResponse
文件元数据信息
| Field | Type | Required | Example | Constraints | Description |
|---|---|---|---|---|---|
bucket |
string |
No | avatars |
存储�? | |
created_at |
string |
No | 2026-04-15T10:00:00Z |
创建时间 | |
etag |
string |
No | "abc123def456" |
ETag | |
file_id |
string |
No | file_abc123 |
文件ID | |
is_public |
boolean |
No | False |
可见性? | |
mime_type |
string |
No | image/jpeg |
MIME类型 | |
name |
string |
No | avatar.jpg |
文件名称 | |
object_name |
string |
No | 2026/04/file_abc123.jpg |
对象名称? | |
original_name |
string |
No | avatar.jpg |
原始名称 | |
owner_id |
string |
No | usr_abc123 |
所有ID | |
parent_id |
string |
No | folder_001 |
父文件夹 | |
size |
integer |
No | 102400 |
文件大小 | |
storage_class |
string |
No | standard |
存储类别 | |
tenant_id |
string |
No | tnt_xyz789 |
租户ID | |
updated_at |
string |
No | 2026-04-15T10:30:00Z |
更新时间 |
dto.Problem
| Field | Type | Required | Example | Constraints | Description |
|---|---|---|---|---|---|
code |
integer |
No | Code 是业务错误码 用于程序处理特定错误场景 示例:30101001 | ||
detail |
string |
No | Detail 是针对此具体错误实例的人类可读解释 可以包含具体的错误细节,如"Field 'email' is required" | ||
errors |
array of |
No | Errors 是字段级验证错误列表(扩展字段) 遵循 Web API 标准实践,每个错误包含字段名和错误信息 | ||
i18n_args |
object |
No | I18nArgs 是国际化参数 用于动态填充翻译模板 | ||
i18n_key |
string |
No | I18nKey 是国际化键 用于客户端本地化错误消息 示例:"error.user_not_found" | ||
instance |
string |
No | Instance 是发生问题的具体URI引用 通常是请求的URL,可能包含查询参数 示例:"/api/v1/users?limit=invalid" | ||
request_id |
string |
No | RequestID 是请求唯一标识 用于日志关联和问题追踪 示例:"req_550e8400-e29b-41d4-a716-446655440000" | ||
retry_after |
integer |
No | RetryAfter 用于 429 Too Many Requests 响应 指示客户端应在多少秒后重试请求(RFC 6585) | ||
service |
string |
No | Service 是服务名 用于微服务架构中定位错误来源 示例:"auth-service" | ||
span_id |
string |
No | SpanID 是当前 span 标识 用于精确定位分布式链路中的当前节点 | ||
status |
integer |
No | Status 是产生的HTTP状态码 用于客户端区分问题类型,不随Accept-Language变化 示例:400, 401, 403, 404, 500 | ||
timestamp |
string |
No | Timestamp 是错误发生时间 ISO 8601 格式 示例:"2026-04-03T12:00:00Z" | ||
title |
string |
No | Title 是简短、人类可读的问题类型摘要 相同的 Type 应该始终有相同的 Title(不随实例变化) 示例:"Invalid Request Parameters" | ||
trace_id |
string |
No | TraceID 是分布式追踪标识 遵循 W3C Trace Context 标准 示例:"00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01" | ||
type |
string |
No | Type 是标识问题类型的URI引用 当该URI被解引用时,应提供人类可读的文档 示例:"https://api.example.com/errors/invalid-request" |