4.5.5. Swift 复制对象
通过复制对象,您可以制作对象的服务器端副本,因此您不必下载对象并将其上传到其他容器下。要将一个对象的内容复制到另一个对象,您可以使用 API 版本、帐户和容器名称发出 PUT 请求或 COPY 请求。
对于 PUT 请求,请使用请求中的目标容器和对象名称,以及请求标头中的源容器和对象。
对于 Copy request,请使用请求中的源容器和对象,以及请求标头中的目标容器和对象。您必须具有容器的写入权限才能复制对象。目标对象名称在容器内必须是唯一的。请求不是幂等的,因此如果您不使用唯一名称,则请求将更新目标对象。如果目标名称位于不同的伪层次结构目录中,您可以使用伪层次结构语法,将目的地对象与同一名称的源对象区分开。您可以在请求中包含访问控制标头和元数据标头。
语法
PUT /API_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1
X-Copy-From: TENANT:SOURCE_CONTAINER/SOURCE_OBJECT
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN
或者:
语法
COPY /API_VERSION/ACCOUNT/TENANT:SOURCE_CONTAINER/SOURCE_OBJECT HTTP/1.1
Destination: TENANT:DEST_CONTAINER/DEST_OBJECT
请求 Headers
X-Copy-From- 描述
-
与
PUT请求一起使用,以定义源容器/对象路径。 - Type
- 字符串
- 必需
-
是,如果使用
PUT。
目的地- 描述
-
与
COPY请求一起使用以定义目标容器/对象路径。 - Type
- 字符串
- 必需
-
是,如果使用
COPY。
If-Modified-Since- 描述
-
只有在修改源对象的
last_modified属性的日期和时间时复制。 - Type
- Date
- 必需
- 否
If-Unmodified-Since- 描述
-
仅在不修改源对象的
last_modified属性的日期和时间时复制。 - Type
- Date
- 必需
- 否
Copy-If-Match- 描述
- 只有在请求中的 ETag 与源对象的 ETag 匹配时才复制。
- Type
- ETag
- 必需
- 否
Copy-If-None-Match- 描述
-
只有在请求中的
ETag不与源对象的 ETag 匹配时才复制。 - Type
- ETag
- 必需
- 否