全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

Upload Part Copy

最近更新时间:2024-03-06 20:40:02

描述

此操作将可以通过拷贝已存在的对象的方式实现上传一个块。用户通过在请求中配置请求头部 x-kss-copy-source 来指定数据源,通过请求头部 x-kss-copy-source-range 来指定字节范围。

注意事项

  • 此外你还可以通过在请求中包含数据的方式来实现块的上传,更多信息,请查看接口 Upload Part

  • 在你上传任一块之前你必须先要启动一个分块上传任务。在你发送一个启动请求后,KS3会给你一个唯一的 upload ID。每次上传块时,都需要将上传ID包含在请求中。

  • 块的数量可以是1到10,000中的任意一个(包含1和10,000)。块序号用于标识一个块以及其在对象创建时的位置。如果你上传一个新的块,使用之前已经使用的序列号,那么之前的那个块将会被覆盖。

  • 除最后一个块外,其余块的大小均要求大于或等于100KB,单个块的大小不能超过5GB。

请求

请求语法

PUT /{ObjectName}?partNumber={PartNumber}&uploadId={UploadId} HTTP/1.1
Host: {BucketName}.{endpoint}
x-kss-copy-source: {/source_bucket/sourceObject}
x-kss-copy-source-range:bytes={first}-{last}
Date: {date}
Authorization: {SignatureValue}

注意:

请求参数

该请求不使用请求参数。

请求头部

该接口可以使用所有常用请求头部。获取更多信息,请点击常用请求头部

名称

描述

是否必选

x-kss-copy-source

空间名称与对象的object key名称的组合,通过斜杠分隔(’/’)。

  • 类型: String

  • 默认值: 无

x-kss-copy-source-range

从数据源拷贝的字节范围。范围设定必需使用 bytes=first-last,其值是基于0的。例如:bytes=0-9 表示用户将复制前10个字节。当拷贝整个对象时,不需要此头部。

  • 类型: Integer

  • 默认值: 无

x-kss-copy-source-if-match

条件复制参数,如果源ObjectETag(entity tag)与指定值一致,则拷贝成功。否则,返回412 Precondition Failed。注意:此参数可搭配x-kss-copy-source-if-unmodified-since一起使用,x-kss-copy-source-if-match优先级高。

  • 类型:String

  • 默认值:None

x-kss-copy-source-if-none-match

条件复制参数,如果源ObjectETag(entity tag)与指定值不一致,则拷贝成功。否则,返回412 Precondition Failed。注意:此参数可搭配x-kss-copy-source-if-modified-since一起使用,x-kss-copy-source-if-none-match优先级高

  • 类型:String

  • 默认值:None

x-kss-copy-source-if-modified-since

条件复制参数,如果源Object在指定时间后被修改,则拷贝成功。否则,返回412 Precondition Failed

  • 类型:String

  • 默认值:None

x-kss-copy-source-if-unmodified-since

条件复制参数,如果源Object在指定时间后没有被修改,则拷贝成功。否则,返回412 Precondition Failed

  • 类型:String

  • 默认值:None

若要求服务端加密则需要以下头部

名称

描述

是否必选

x-kss-server-side-encryption-customer-key

由用户指定KS3加密时使用的 base64-encoded 加密秘钥,其值必须与启动分块上传任务时的秘钥一致。

  • 类型:String

  • 约束:需要和有效的 x-kss-server-side-encryption-customer-algorithm,x-kss-server-side-encryption-customer-key-MD5 同时使用

x-kss-server-side-encryption-customer-algorithm

如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来确认使用的解密算法。

  • 类型:String

  • 有效值:AES256

  • 约束:需要和有效的 x-kss-server-side-encryption-customer-key,x-kss-server-side-encryption-customer-key-MD5 同时使用

x-kss-server-side-encryption-customer-key-MD5

如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来提供用户提供加密秘钥的数据一致性验证信息。

  • 类型:String

  • 约束:需要和有效的 x-kss-server-side-encryption-customer-key,x-kss-server-side-encryption-customer-algorithm 同时使用

如果作为数据源的对象使用用户秘钥进行服务端加密,用户需要使用下列头部使KS3能够对对象解密。

名称

描述

是否必选

x-kss-copy-source-server-side-encryption-customer-key

由用户指定KS3解密时使用的 base64-encoded 加密秘钥,其值必须数据源对象创建时使用的秘钥一致。

  • 类型:String

  • 约束:需要和有效的 x-kss-server-side-encryption-customer-algorithm,x-kss-server-side-encryption-customer-key-MD5 同时使用

x-kss-copy-source-server-side-encryption-customer-algorithm

指定数据源对象解密使用的解密算法。

  • 类型:String

  • 有效值:AES256

  • 约束:需要和有效的 x-kss-server-side-encryption-customer-key,x-kss-server-side-encryption-customer-key-MD5 同时使用

x-kss-copy-source-server-side-encryption-customer-key-MD5

如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来提供用户提供加密秘钥的数据一致性验证信息。

  • 类型:String

  • 约束:需要和有效的 x-kss-server-side-encryption-customer-key,x-kss-server-side-encryption-customer-algorithm 同时使用

请求内容

该接口不使用请求内容。

响应

响应头部

该接口可以使用所有常用响应头部。获取更多信息,请点击常用响应头部

名称

描述

x-kss-checksum-crc64ecma

Part的CRC64值,用于数据完整性校验。关于CRC64的计算标准,请参见:ECMA-182标准

  • 类型:String

x-kss-server-side-encryption

如果存储 object 时使用了服务端加密,则响应会包含该头部,值为使用的加密算法。

  • 类型:String

x-kss-server-side-encryption-customer-algorithm

如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来确认使用的解密算法。

  • 类型:String

  • 有效值:AES256

x-kss-server-side-encryption-customer-key-MD5

如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来提供用户提供加密秘钥的数据一致性验证信息。

  • 类型:String

响应内容

名称

描述

CopyObjectResult

响应内容的容器。

  • 类型: Container

  • 父节点: 无

ETag

返回一个新块的实体标签。

  • 类型: String

  • 父节点: CopyObjectResult

LastModified

返回最后被修改的时间日期。

  • 类型: String

  • 父节点: CopyObjectResult

ChecksumCRC64ECMA

Part的CRC64值,用于对象完整性校验。关于CRC64的计算标准,请参见:ECMA-182标准

  • 类型:String

示例

请求示例

PUT /new-video.rm?partNumber=2 &uploadId=6aaf37c7501847569c91f9957b01fd14 HTTP/1.1
Host: ks3-example.ks3-cn-beijing.ksyuncs.com
Date: Mon, 11 Apr 2011 20:34:56 GMT
x-kss-copy-source: /source-bucket/sourceobject
x-kss-copy-source-range:bytes=500-6291456
Authorization: authorization string

响应示例

HTTP/1.1 200 OK
Date: Mon, 11 Apr 2011 20:34:56 GMT
x-kss-request-id: f86mgt82ketobs6lcpib5no5lmo3****
x-kss-checksum-crc64ecma: 1408511733533619****
Server: KS3

<CopyObjectResult>
    <LastModified>2009-10-28T22:32:00</LastModified>
    <ETag>"9b2cf535f27731c974343645a398****"</ETag>
    <ChecksumCRC64ECMA>"9b2cf535f27731c974343645a398****"</ChecksumCRC64ECMA>
</CopyObjectResult>

错误码

错误码

HTTP状态码

描述

NoSuchUpload

404

指定的分块上传任务不存在。可能是上传ID无效,也可能是分块上传任务已经完成或放弃。

NoSuchKey

404

指定的文件不存在。

NoSuchBucket

404

指定的桶不存在。

InvalidObjectState

403

源文件存储类型是归档存储,未解冻时调用该接口。

InvalidRequest

400

指定数据源对象不支持按字节范围进行拷贝。

InvalidPartNum

400

超出PartNumber取值范围(1~10000)。

InvalidStorageClass

400

源文件存储类型与目的文件存储类型不一致。

Request Entity Too Large

413

分块过大,分块大小不能大于5GB。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈