阅读616 返回首页    go 人物


UploadPart__关于MultipartUpload的操作_API 参考_对象存储 OSS-阿里云

初始化一个Multipart Upload之后,可以根据指定的Object名和Upload ID来分块(Part)上传数据。每一个上传的Part都有一个标识它的号码(part number,范围是1~10,000)。对于同一个Upload ID,该号码不但唯一标识这一块数据,也标识了这块数据在整个文件内的相对位置。如果你用同一个part号码,上传了新的数据,那么OSS上已有的这个号码的Part数据将被覆盖。除了最后一块Part以外,其他的part最小为100KB;最后一块Part没有大小限制。

请求语法

  1. PUT /ObjectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1
  2. Host: BucketName.oss-cn-hangzhou.aliyuncs.com
  3. Date: GMT Date
  4. Content-Length: Size
  5. Authorization: SignatureValue

细节分析

  1. 调用该接口上传Part数据前,必须调用Initiate Multipart Upload接口,获取一个OSS服务器颁发的Upload ID。
  2. Multipart Upload要求除最后一个Part以外,其他的Part大小都要大于100KB。但是Upload Part接口并不会立即校验上传Part的大小(因为不知道是否为最后一块);只有当Complete Multipart Upload的时候才会校验。
  3. OSS会将服务器端收到Part数据的MD5值放在ETag头内返回给用户。
  4. Part号码的范围是1~10000。如果超出这个范围,OSS将返回InvalidArgument的错误码。
  5. 若调用Initiate Multipart Upload接口时,指定了x-oss-server-side-encryption请求头,则会对上传的Part进行加密编码,并在Upload Part响应头中返回x-oss-server-side-encryption头,其值表明该Part的服务器端加密算法,具体见Initiate Multipart Upload接口。6.为了保证数据在网络传输过程中不出现错误,用户发送请求时携带Content-MD5,OSS会计算上传数据的MD5与用户上传的MD5值比较,如果不一致返回InvalidDigest错误码。

示例

请求示例:

  1. PUT /multipart.data?partNumber=1&uploadId=0004B9895DBBB6EC98E36 HTTP/1.1
  2. Host: oss-example.oss-cn-hangzhou.aliyuncs.com
  3. Content-Length:6291456
  4. Date: Wed, 22 Feb 2012 08:32:21 GMT
  5. Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:J/lICfXEvPmmSW86bBAfMmUmWjI=
  6. [6291456 bytes data]

返回示例:

  1. HTTP/1.1 200 OK
  2. Server: AliyunOSS
  3. Connection: keep-alive
  4. ETag: 7265F4D211B56873A381D321F586E4A9
  5. x-oss-request-id: 3e6aba62-1eae-d246-6118-8ff42cd0c21a
  6. Date: Wed, 22 Feb 2012 08:32:21 GMT

最后更新:2016-11-23 17:16:08

  上一篇:go InitiateMultipartUpload__关于MultipartUpload的操作_API 参考_对象存储 OSS-阿里云
  下一篇:go UploadPartCopy__关于MultipartUpload的操作_API 参考_对象存储 OSS-阿里云