• Модуль: clouds
  • Путь к файлу: ~/bitrix/modules/clouds/classes/general/storage_service_s3.php
  • Класс: CCloudStorageService_S3
  • Вызов: CCloudStorageService_S3::CompleteMultipartUpload
function CompleteMultipartUpload($arBucket, &$NS)
{
	$filePath = '/'.trim($NS["filePath"], '/');
	if($arBucket["PREFIX"])
	{
		if(mb_substr($filePath, 0, mb_strlen($arBucket["PREFIX"]) + 2) != "/".$arBucket["PREFIX"]."/")
			$filePath = "/".$arBucket["PREFIX"].$filePath;
	}
	$filePath = CCloudUtil::URLEncode($filePath, "UTF-8", true);

	ksort($NS["Parts"]);
	$data = "";
	foreach($NS["Parts"] as $PartNumber => $ETag)
	{
		$data .= "".($PartNumber+1)."".$ETag."n";
	}

	if (
		defined("BX_CLOUDS_COUNTERS_DEBUG")
		&& !preg_match(BX_CLOUDS_COUNTERS_DEBUG, $filePath)
	)
	{
		CCloudsDebug::getInstance("post")->startAction($filePath);
	}

	$this->SetLocation($arBucket["LOCATION"]);
	$this->SendRequest(
		$arBucket["SETTINGS"],
		'POST',
		$arBucket["BUCKET"],
		$filePath,
		'?uploadId='.rawurlencode($NS["UploadId"]),
		"".$data.""
	);

	if (
		defined("BX_CLOUDS_COUNTERS_DEBUG")
		&& !preg_match(BX_CLOUDS_COUNTERS_DEBUG, $filePath)
	)
	{
		CCloudsDebug::getInstance("post")->endAction();
	}

	if (
		defined("BX_CLOUDS_COUNTERS_DEBUG")
		&& $this->status == 200
		&& !preg_match(BX_CLOUDS_COUNTERS_DEBUG, $filePath)
	)
	{
		CCloudsDebug::getInstance()->startAction($filePath);
	}

	if ($this->status == 200)
	{
		return true;
	}
	else
	{
		if (defined("BX_CLOUDS_ERROR_DEBUG"))
		{
			AddMessage2Log($this);
		}
		return false;
	}
}