示例#1
0
 /**
  * @param $object
  * @param $uploadFile
  * @param int $size
  * @return null
  * @throws \OSS\Core\OssException
  */
 protected function streamUpload($object, $uploadFile, $size = null)
 {
     $client = $this->getClient();
     $bucket = $this->bucket;
     $upload_position = 0;
     $upload_file_size = $size ?: Util::getStreamSize($uploadFile);
     $extension = pathinfo($object, PATHINFO_EXTENSION);
     $options = [OssClient::OSS_CONTENT_TYPE => MimeType::detectByFileExtension($extension) ?: OssClient::DEFAULT_CONTENT_TYPE, OssClient::OSS_PART_SIZE => OssClient::OSS_MID_PART_SIZE];
     $is_check_md5 = false;
     $uploadId = $client->initiateMultipartUpload($bucket, $object, $options);
     // 获取的分片
     $pieces = $client->generateMultiuploadParts($upload_file_size, (int) $options[OssClient::OSS_PART_SIZE]);
     $response_upload_part = array();
     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 => $uploadFile, 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 = OssUtil::getMd5SumForFile($uploadFile, $from_pos, $to_pos);
             $up_options[OssClient::OSS_CONTENT_MD5] = $content_md5;
         }
         $response_upload_part[] = $client->uploadPart($bucket, $object, $uploadId, $up_options);
     }
     $uploadParts = array();
     foreach ($response_upload_part as $i => $etag) {
         $uploadParts[] = array('PartNumber' => $i + 1, 'ETag' => $etag);
     }
     return $client->completeMultipartUpload($bucket, $object, $uploadId, $uploadParts);
 }
示例#2
0
 /**
  * 生成DeleteMultiObjects接口的xml消息
  *
  * @param string[] $objects
  * @param bool $quiet
  * @return string
  */
 public static function createDeleteObjectsXmlBody($objects, $quiet)
 {
     $xml = new \SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><Delete></Delete>');
     $xml->addChild('Quiet', $quiet);
     foreach ($objects as $object) {
         $sub_object = $xml->addChild('Object');
         $object = OssUtil::sReplace($object);
         $sub_object->addChild('Key', $object);
     }
     return $xml->asXML();
 }