• Модуль: transformer
  • Путь к файлу: ~/bitrix/modules/transformer/lib/fileuploader.php
  • Класс: BitrixTransformerFileUploader
  • Вызов: FileUploader::saveUploadedPartToCloud
static function saveUploadedPartToCloud($fileName, $data, $fileSize, $isLastPart, $bucketId)
{
	$result = new Result();
	if(BitrixMainLoader::includeModule('clouds'))
	{
		$bucket = new CCloudStorageBucket($bucketId);
		if(!$bucket->init())
		{
			$result->addError(new Error('Could not init bucket'));
			return $result;
		}
		$isStarted = true;
		$upload = new CCloudStorageUpload($fileName);

		if(!$upload->isStarted())
		{
			/** @noinspection PhpParamsInspection */
			$isStarted = $upload->start($bucket, $fileSize);
		}

		if(!$isStarted)
		{
			$result->addError(new Error('Could not start upload'));
		}

		$success = false;
		$fails = 0;
		while($upload->hasRetries())
		{
			if($upload->Next($data, $bucket))
			{
				$success = true;
				break;
			}
			$fails++;
		}
		if(!$success)
		{
			$result->addError(new Error('Could not upload part'));
			return $result;
		}
		elseif($success && $isLastPart)
		{
			if(!$upload->finish())
			{
				$result->addError(new Error('Could not finish upload'));
				return $result;
			}
		}
		$result->setData(array('result' => 'cloud'));
	}
	else
	{
		$result->addError(new Error('Module clouds is not installed'));
	}
	return $result;
}