- Модуль: clouds
- Путь к файлу: ~/bitrix/modules/clouds/classes/general/storage_service_s3.php
- Класс: CCloudStorageService_S3
- Вызов: CCloudStorageService_S3::InitiateMultipartUpload
function InitiateMultipartUpload($arBucket, &$NS, $filePath, $fileSize, $ContentType)
{
$filePath = '/'.trim($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);
$additional_headers = array();
if($this->_public)
$additional_headers["x-amz-acl"] = "public-read";
$additional_headers["Content-Type"] = $ContentType;
$this->SetLocation($arBucket["LOCATION"]);
$response = $this->SendRequest(
$arBucket["SETTINGS"],
'POST',
$arBucket["BUCKET"],
$filePathU,
'?uploads=',
'',
$additional_headers
);
if(
$this->status == 200
&& is_array($response)
&& isset($response["InitiateMultipartUploadResult"])
&& is_array($response["InitiateMultipartUploadResult"])
&& isset($response["InitiateMultipartUploadResult"]["#"])
&& is_array($response["InitiateMultipartUploadResult"]["#"])
&& isset($response["InitiateMultipartUploadResult"]["#"]["UploadId"])
&& is_array($response["InitiateMultipartUploadResult"]["#"]["UploadId"])
&& isset($response["InitiateMultipartUploadResult"]["#"]["UploadId"][0])
&& is_array($response["InitiateMultipartUploadResult"]["#"]["UploadId"][0])
&& isset($response["InitiateMultipartUploadResult"]["#"]["UploadId"][0]["#"])
&& is_string($response["InitiateMultipartUploadResult"]["#"]["UploadId"][0]["#"])
)
{
$NS = array(
"filePath" => $filePath,
"UploadId" => $response["InitiateMultipartUploadResult"]["#"]["UploadId"][0]["#"],
"Parts" => array(),
);
return true;
}
elseif ($this->checkForTokenExpiration($this->status, $this->result))
{
$this->tokenHasExpired = true;
return false;
}
else
{
if (defined("BX_CLOUDS_ERROR_DEBUG"))
{
AddMessage2Log($this);
}
return false;
}
}