• Модуль: clouds
  • Путь к файлу: ~/bitrix/modules/clouds/classes/general/storage_service_openstack.php
  • Класс: CCloudStorageService_OpenStackStorage
  • Вызов: CCloudStorageService_OpenStackStorage::CompleteMultipartUpload
function CompleteMultipartUpload($arBucket, &$NS)
{
	$filePath = CCloudUtil::URLEncode($NS["fileTemp"], "UTF-8", true);

	$this->SendRequest(
		$arBucket["SETTINGS"],
		"PUT",
		$arBucket["BUCKET"],
		$filePath,
		"",
		false,
		array(
			"Content-Length" => 0,
			"Content-Type" => $NS["Content-Type"],
			"X-Object-Manifest" => $arBucket["BUCKET"].$filePath."/",
		)
	);

	if($this->status == 201)
	{
		$fileSource = CCloudUtil::URLEncode("/".$arBucket["BUCKET"].$NS["fileTemp"], "UTF-8", true);

		$this->SendRequest(
			$arBucket["SETTINGS"],
			"PUT",
			$arBucket["BUCKET"],
			CCloudUtil::URLEncode($NS["filePath"], "UTF-8", true),
			'',
			false,
			array(
				"Content-Type" => $NS["Content-Type"],
				"X-Copy-From" => $fileSource,
			)
		);

		if(
			$this->status == 201
			|| $this->status == 200
		)
			$result = true;
		else
			$result = false;

		$this->DeleteFile($arBucket, $NS["fileTemp"]);
		ksort($NS["Parts"]);
		foreach ($NS["Parts"] as $tmpPath)
		{
			$this->DeleteFile($arBucket, $tmpPath);
		}

		return $result;
	}
	else
	{
		//May be delete uploaded tmp file?
		AddMessage2Log($this);
		return false;
	}
}