/**
  * 解析从ListMultipartUpload接口的返回数据
  *
  * @return ListMultipartUploadInfo
  */
 protected function parseDataFromResponse()
 {
     $content = $this->rawResponse->body;
     $xml = simplexml_load_string($content);
     $encodingType = isset($xml->EncodingType) ? strval($xml->EncodingType) : "";
     $bucket = isset($xml->Bucket) ? strval($xml->Bucket) : "";
     $keyMarker = isset($xml->KeyMarker) ? strval($xml->KeyMarker) : "";
     $keyMarker = Util::decodeKey($keyMarker, $encodingType);
     $uploadIdMarker = isset($xml->UploadIdMarker) ? strval($xml->UploadIdMarker) : "";
     $nextKeyMarker = isset($xml->NextKeyMarker) ? strval($xml->NextKeyMarker) : "";
     $nextKeyMarker = Util::decodeKey($nextKeyMarker, $encodingType);
     $nextUploadIdMarker = isset($xml->NextUploadIdMarker) ? strval($xml->NextUploadIdMarker) : "";
     $delimiter = isset($xml->Delimiter) ? strval($xml->Delimiter) : "";
     $delimiter = Util::decodeKey($delimiter, $encodingType);
     $prefix = isset($xml->Prefix) ? strval($xml->Prefix) : "";
     $prefix = Util::decodeKey($prefix, $encodingType);
     $maxUploads = isset($xml->MaxUploads) ? intval($xml->MaxUploads) : 0;
     $isTruncated = isset($xml->IsTruncated) ? strval($xml->IsTruncated) : "";
     $listUpload = array();
     if (isset($xml->Upload)) {
         foreach ($xml->Upload as $upload) {
             $key = isset($upload->Key) ? strval($upload->Key) : "";
             $key = Util::decodeKey($key, $encodingType);
             $uploadId = isset($upload->UploadId) ? strval($upload->UploadId) : "";
             $initiated = isset($upload->Initiated) ? strval($upload->Initiated) : "";
             $listUpload[] = new UploadInfo($key, $uploadId, $initiated);
         }
     }
     return new ListMultipartUploadInfo($bucket, $keyMarker, $uploadIdMarker, $nextKeyMarker, $nextUploadIdMarker, $delimiter, $prefix, $maxUploads, $isTruncated, $listUpload);
 }
 private function parsePrefixList($xml, $encodingType)
 {
     $retList = array();
     if (isset($xml->CommonPrefixes)) {
         foreach ($xml->CommonPrefixes as $commonPrefix) {
             $prefix = isset($commonPrefix->Prefix) ? strval($commonPrefix->Prefix) : "";
             $prefix = Util::decodeKey($prefix, $encodingType);
             $retList[] = new PrefixInfo($prefix);
         }
     }
     return $retList;
 }
Esempio n. 3
0
 /**
  * 检查endpoint的种类
  * 如有有协议头,剥去协议头
  * 并且根据参数 is_cname 和endpoint本身,判定域名类型,是ip,cname,还是专有域或者官网域名
  *
  * @param string  $endpoint
  * @param boolean $isCName
  *
  * @return string 剥掉协议头的域名
  */
 private function checkEndpoint($endpoint, $isCName)
 {
     $ret_endpoint = null;
     if (strpos($endpoint, 'http://') === 0) {
         $ret_endpoint = substr($endpoint, strlen('http://'));
     } elseif (strpos($endpoint, 'https://') === 0) {
         $ret_endpoint = substr($endpoint, strlen('https://'));
         $this->useSSL = true;
     } else {
         $ret_endpoint = $endpoint;
     }
     if ($isCName) {
         $this->hostType = self::OSS_HOST_TYPE_CNAME;
     } elseif (Util::isIPFormat($ret_endpoint)) {
         $this->hostType = self::OSS_HOST_TYPE_IP;
     } else {
         $this->hostType = self::OSS_HOST_TYPE_NORMAL;
     }
     return $ret_endpoint;
 }
 public function testPutObjectByRawApis()
 {
     $object = "mpu/multipart-test.txt";
     /**
      *  step 1. 初始化一个分块上传事件, 也就是初始化上传Multipart, 获取upload id
      */
     try {
         $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object);
     } catch (Exception $e) {
         $this->assertFalse(true);
     }
     /*
      * step 2. 上传分片
      */
     $part_size = 10 * 1024 * 1024;
     $upload_file = __FILE__;
     $upload_filesize = filesize($upload_file);
     $pieces = $this->ossClient->generateMultiuploadParts($upload_filesize, $part_size);
     $response_upload_part = array();
     $upload_position = 0;
     $is_check_md5 = true;
     foreach ($pieces as $i => $piece) {
         $from_pos = $upload_position + (int) $piece[OSSClient::OSS_SEEK_TO];
         $to_pos = (int) $piece[OSSClient::OSS_LENGTH] + $from_pos - 1;
         $up_options = array(OSSClient::OSS_FILE_UPLOAD => $upload_file, OSSClient::OSS_PART_NUM => $i + 1, OSSClient::OSS_SEEK_TO => $from_pos, OSSClient::OSS_LENGTH => $to_pos - $from_pos + 1, OSSClient::OSS_CHECK_MD5 => $is_check_md5);
         if ($is_check_md5) {
             $content_md5 = Util::getMd5SumForFile($upload_file, $from_pos, $to_pos);
             $up_options[OSSClient::OSS_CONTENT_MD5] = $content_md5;
         }
         //2. 将每一分片上传到OSS
         try {
             $response_upload_part[] = $this->ossClient->uploadPart($this->bucket, $object, $upload_id, $up_options);
         } catch (Exception $e) {
             $this->assertFalse(true);
         }
     }
     $upload_parts = array();
     foreach ($response_upload_part as $i => $eTag) {
         $upload_parts[] = array('PartNumber' => $i + 1, 'ETag' => $eTag);
     }
     try {
         $listPartsInfo = $this->ossClient->listParts($this->bucket, $object, $upload_id);
         $this->assertNotNull($listPartsInfo);
     } catch (Exception $e) {
         $this->assertTrue(false);
     }
     /**
      * step 3.
      */
     try {
         $this->ossClient->completeMultipartUpload($this->bucket, $object, $upload_id, $upload_parts);
     } catch (Exception $e) {
         $this->assertTrue(false);
     }
 }
Esempio n. 5
0
 public function testThrowOSSExceptionWithMessageIfEmpty3()
 {
     $null = "xx";
     try {
         Util::throwOSSExceptionWithMessageIfEmpty($null, "xx");
         $this->assertTrue(true);
     } catch (Exception $e) {
         $this->assertTrue(false);
     }
 }