- Модуль: clouds
- Путь к файлу: ~/bitrix/modules/clouds/classes/general/storage_service_google.php
- Класс: CCloudStorageService_GoogleStorage
- Вызов: CCloudStorageService_GoogleStorage::CompleteMultipartUpload
function CompleteMultipartUpload($arBucket, &$NS)
{
if (isset($NS["Parts"]))
{
// https://cloud.google.com/storage/docs/xml-api/put-object-compose
$filePath = '/'.trim($NS["filePath"], '/');
if($arBucket["PREFIX"])
{
if(mb_substr($filePath, 0, mb_strlen($arBucket["PREFIX"]) + 2) != "/".$arBucket["PREFIX"]."/")
$filePath = "/".$arBucket["PREFIX"].$filePath;
}
$filePathU = CCloudUtil::URLEncode($filePath, "UTF-8", true);
$xml = "";
foreach ($NS["Parts"] as $i => $part)
{
$xml .= "".ltrim($part["filePath"], '/')."";
}
$xml .= "";
$response = $this->SendRequest(
$arBucket["SETTINGS"]["ACCESS_KEY"],
$arBucket["SETTINGS"]["SECRET_KEY"],
'PUT',
$arBucket["BUCKET"],
$filePathU.'?compose',
'',
$xml,
array(
"x-goog-acl"=>"public-read",
"Content-Type"=>$NS["ContentType"],
)
);
if ($this->status == 200)
{
foreach ($NS["Parts"] as $i => $part)
{
$this->DeleteFile($arBucket, $part["filePath"]);
}
return true;
}
else
{
if (defined("BX_CLOUDS_ERROR_DEBUG"))
{
AddMessage2Log($this);
}
return false;
}
}
return true;
}