/** * 在将所有数据Part都上传完成后,调用此接口完成本次分块上传 * * @param string $bucket Bucket名称 * @param string $object Object名称 * @param string $uploadId uploadId * @param array $listParts array( array("PartNumber"=> int, "ETag"=>string)) * @param array $options Key-Value数组 * @throws OssException * @return null */ public function completeMultipartUpload($bucket, $object, $uploadId, $listParts, $options = NULL) { $this->precheckCommon($bucket, $object, $options); $options[self::OSS_METHOD] = self::OSS_HTTP_POST; $options[self::OSS_BUCKET] = $bucket; $options[self::OSS_OBJECT] = $object; $options[self::OSS_UPLOAD_ID] = $uploadId; $options[self::OSS_CONTENT_TYPE] = 'application/xml'; if (!is_array($listParts)) { throw new OssException("listParts must be array type"); } $options[self::OSS_CONTENT] = OssUtil::createCompleteMultipartUploadXmlBody($listParts); $response = $this->auth($options); if (isset($options[self::OSS_CALLBACK]) && !empty($options[self::OSS_CALLBACK])) { $result = new CallbackResult($response); } else { $result = new PutSetDeleteResult($response); } return $result->getData(); }
public function testCreateCompleteMultipartUploadXmlBody() { $xml = <<<BBBB <?xml version="1.0" encoding="utf-8"?><CompleteMultipartUpload><Part><PartNumber>2</PartNumber><ETag>xx</ETag></Part></CompleteMultipartUpload> BBBB; $a = array(array("PartNumber" => 2, "ETag" => "xx")); $this->assertEquals($this->cleanXml(OssUtil::createCompleteMultipartUploadXmlBody($a)), $xml); }