- Модуль: 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;
}
}