26 $this->_filePath = $filePath;
27 $this->_ID =
'1' . mb_substr(md5($filePath), 1);
37 if (!isset($this->_cache))
41 FROM b_clouds_file_upload
42 WHERE ID = '" . $this->_ID .
"'
44 $this->_cache =
$rs->Fetch();
65 $DB->Query(
"DELETE FROM b_clouds_file_upload WHERE ID = '" . $this->_ID .
"'");
75 $DB->Query(
'DELETE FROM b_clouds_file_upload WHERE TIMESTAMP_X < ' .
$DB->CharToDateFunction(ConvertTimeStamp(time() - 24 * 60 * 60)));
84 public function Start($bucket_id, $fileSize, $ContentType =
'binary/octet-stream', $tmpFileName =
false)
89 if (is_object($bucket_id))
106 $bStarted =
$obBucket->getService()->InitiateMultipartUpload(
113 if (!$bStarted &&
$obBucket->RenewToken())
115 $bStarted =
$obBucket->getService()->InitiateMultipartUpload(
126 $bAdded =
$DB->Add(
'b_clouds_file_upload', [
128 '~TIMESTAMP_X' =>
$DB->CurrentTimeFunction(),
129 'FILE_PATH' => $this->_filePath,
130 'FILE_SIZE' => $fileSize,
131 'TMP_FILE' => $tmpFileName,
133 'PART_SIZE' =>
$obBucket->getService()->GetMinUploadPartSize(),
135 'PART_FAIL_COUNTER' => 0,
136 'NEXT_STEP' => serialize($arUploadInfo),
138 unset($this->_cache);
140 return $bAdded !==
false;
182 $arUploadInfo = unserialize(
$ar[
'NEXT_STEP'], [
'allowed_classes' =>
false]);
183 $bSuccess =
$obBucket->getService()->UploadPart(
234 $arUploadInfo = unserialize(
$ar[
'NEXT_STEP'], [
'allowed_classes' =>
false]);
235 $bSuccess =
$obBucket->getService()->UploadPartNo(
283 $arUploadInfo = unserialize(
$ar[
'NEXT_STEP'], [
'allowed_classes' =>
false]);
284 $bSuccess =
$obBucket->getService()->CompleteMultipartUpload(
298 foreach (
GetModuleEvents(
'clouds',
'OnAfterCompleteMultipartUpload',
true) as $arEvent)
327 return intval(
$ar[
'PART_NO']);
344 return intval(
$ar[
'PART_NO']) * doubleval(
$ar[
'PART_SIZE']);
361 return intval(
$ar[
'PART_SIZE']);
386 return $ar[
'TMP_FILE'];
406 'NEXT_STEP' => serialize($arUploadInfo),
407 '~PART_NO' =>
'PART_NO + 1',
408 'PART_FAIL_COUNTER' => 0,
417 '~PART_FAIL_COUNTER' =>
'PART_FAIL_COUNTER + 1',
423 $strUpdate =
$DB->PrepareUpdate(
'b_clouds_file_upload',
$arFields);
424 if ($strUpdate !=
'')
426 $strSql =
'UPDATE b_clouds_file_upload SET ' . $strUpdate .
" WHERE ID = '" . $this->_ID .
"'";
427 if (!
$DB->QueryBind($strSql, $arBinds))
429 unset($this->_cache);
434 unset($this->_cache);
447 SELECT ID, BUCKET_ID, NEXT_STEP
448 FROM b_clouds_file_upload
449 WHERE ID = '" . $helper->forSql(
$ID) .
"'
454 $days = COption::GetOptionInt(
'clouds',
'multipart_upload_keep_days');
458 SELECT ID, BUCKET_ID, NEXT_STEP
459 FROM b_clouds_file_upload
460 WHERE TIMESTAMP_X < ' . $helper->addDaysToDateTime(-$days)
467 while ($arBucket =
$rs->fetch())
472 $arUploadInfo = unserialize($arBucket[
'NEXT_STEP'], [
'allowed_classes' =>
false]);
476 $connection->query(
"DELETE FROM b_clouds_file_upload WHERE ID = '" . $helper->forSql($arBucket[
'ID']) .
"'");
static getConnection($name="")
static queueCopy($obBucket, $FILE_PATH)
Start($bucket_id, $fileSize, $ContentType='binary/octet-stream', $tmpFileName=false)
UpdateProgress($arUploadInfo, $bSuccess)
Next($data, $obBucket=null)
Part($data, $part_no, $obBucket=null)
ExecuteModuleEventEx($arEvent, $arParams=[])
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)