• Модуль: clouds
  • Путь к файлу: ~/bitrix/modules/clouds/classes/general/storage_upload.php
  • Класс: CCloudStorageUpload
  • Вызов: CCloudStorageUpload::Start
function Start($bucket_id, $fileSize, $ContentType = 'binary/octet-stream', $tmpFileName = false)
{
	global $DB;
	global $APPLICATION;

	if(is_object($bucket_id))
		$obBucket = $bucket_id;
	else
		$obBucket = new CCloudStorageBucket(intval($bucket_id));

	if(!$obBucket->Init())
		return false;

	if(!$this->isStarted())
	{
		$arUploadInfo = /*.(array[string]string).*/array();
		$bStarted = $obBucket->GetService()->InitiateMultipartUpload(
			$obBucket->GetBucketArray(),
			$arUploadInfo,
			$this->_filePath,
			$fileSize,
			$ContentType
		);
		if (!$bStarted && $obBucket->RenewToken())
		{
			$bStarted = $obBucket->GetService()->InitiateMultipartUpload(
				$obBucket->GetBucketArray(),
				$arUploadInfo,
				$this->_filePath,
				$fileSize,
				$ContentType
			);
		}

		if($bStarted)
		{
			$bAdded = $DB->Add("b_clouds_file_upload", array(
				"ID" => $this->_ID,
				"~TIMESTAMP_X" => $DB->CurrentTimeFunction(),
				"FILE_PATH" => $this->_filePath,
				"FILE_SIZE" => $fileSize,
				"TMP_FILE" => $tmpFileName,
				"BUCKET_ID" => intval($obBucket->ID),
				"PART_SIZE" => $obBucket->GetService()->GetMinUploadPartSize(),
				"PART_NO" => 0,
				"PART_FAIL_COUNTER" => 0,
				"NEXT_STEP" => serialize($arUploadInfo),
			), array("NEXT_STEP"));
			unset($this->_cache);

			return $bAdded !== false;
		}
		else
		{
			$error = $obBucket->GetService()->formatError();
			if ($error)
			{
				$APPLICATION->ThrowException($error);
			}
			else
			{
				$APPLICATION->ThrowException(GetMessage('CLO_STORAGE_UPLOAD_ERROR', array('#errno#'=>6)));
			}
		}
	}

	return false;
}