此操作将可以通过拷贝已存在的对象的方式实现上传一个块。用户通过在请求中配置请求头部 x-kss-copy-source
来指定数据源,通过请求头部 x-kss-copy-source-range
来指定字节范围。
注意 此外你还可以通过在请求中包含数据的方式来实现块的上传,更多信息,请查看接口 Upload Part
在你上传任一块之前你必须先要启动一个分块上传任务。在你发送一个启动请求后,KS3会给你一个唯一的 upload ID
。每次上传块时,都需要将上传ID包含在请求中。
块的数量可以是1到10,000中的任意一个(包含1和10,000)。块序号用于标识一个块以及其在对象创建时的位置。如果你上传一个新的块,使用之前已经使用的序列号,那么之前的那个块将会被覆盖。出了最后一个块没有大小限制外,其余的块的大小均要求在5MB以上。
PUT /ObjectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1
Host: BucketName.kss.ksyun.com
x-kss-copy-source: /source_bucket/sourceObject
x-kss-copy-source-range:bytes=first-last
x-kss-copy-source-if-match: etag
x-kss-copy-source-if-none-match: etag
x-kss-copy-source-if-unmodified-since: time_stamp
x-kss-copy-source-if-modified-since: time_stamp
Date: date
Authorization: authorization string
该请求不使用请求参数。
该接口可以使用所有常用响应头部。获取更多信息,请点击常用响应头部。
名称 | 描述 | 必需 |
---|---|---|
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
头部
名称 | 描述 | 必需 |
---|---|---|
x-kss-copy-source-if-match | 如果 object 的 ETag(entity tag) 与指定值一致,则拷贝 object 。否则,返回412状态码类型:String 默认值:None 约束条件:无 |
否 |
x-kss-copy-source-if-none-match | 如果 object 的 ETag(entity tag) 与指定值不一致,则拷贝 object 。否则,返回304状态码类型:String 默认值:None 约束条件:无 |
否 |
x-kss-copy-source-if-unmodified-since | 如果 object 在指定时间后没有被改变,则拷贝 object 。否则,返回412状态码类型:String 默认值:None 约束条件:无 |
否 |
x-kss-copy-source-if-modified-since | 如果 object 在指定时间后被改变,则拷贝 object 。否则,返回304状态码类型: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-server-side-encryption | 如果存储 object 时使用了服务端加密,则响应会包含该头部,值为使用的加密算法。类型:String |
x-kss-server-side-encryption-customer-algorithm | 如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来确认使用的解密算法。 类型:String 有效值:AES256 |
x-kss-server-side-encryption-customer-key-MD5 | 如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来提供用户提供加密秘钥的数据一致性验证信息。 类型:String |
名称 | 描述 |
---|---|
CopyPartResult | 响应内容的容器。 类型: Container 父节点: 无 |
ETag | 返回一个新块的实体标签。 类型: String 父节点: CopyPartResult |
LastModified | 返回最后被修改的时间日期。 类型: String 父节点: CopyPartResult |
错误代码 | 描述 | HTTP状态码 |
---|---|---|
NoSuchUpload | 指定的分块上传任务不存在。可能是上传ID无效,也可能是分块上传任务已经完成或放弃。 | 404 Not Found |
InvalidRequest | 指定数据源对象不支持按字节范围进行拷贝。 | 400 Bad Request |
请求示例
PUT /newobject?partNumber=2&uploadId=6aaf37c7501847569c91f9957b01fd14 HTTP/1.1
Host: target-bucket.kss.ksyun.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
Server: Tengine
<CopyPartResult>
<LastModified>2009-10-28T22:32:00</LastModified>
<ETag>"9b2cf535f27731c974343645a3985328"</ETag>
</CopyPartResult>