示例#1
0
文件: dump.php 项目: nProfessor/Mytb
				$obUpload = new CCloudStorageUpload(substr($NS['arc_name'],strlen(DOCUMENT_ROOT)));
				if (!$obUpload->isStarted())
				{
					if (!$obUpload->Start(intval($NS['BUCKET_ID']), $file_size))
					{
						if ($e = $APPLICATION->GetException())
							$strError = $e->GetString();
						else
							$strError = GetMessage('MAIN_DUMP_INT_CLOUD_ERR');
						RaiseErrorAndDie($strError);
					}
				}

				if ($fp = fopen($NS['arc_name'],'rb'))
				{
					fseek($fp, $obUpload->getPos());
					$part = fread($fp, $obUpload->getPartSize());
					fclose($fp);
					while($obUpload->hasRetries())
						if($res = $obUpload->Next($part))
							break;
					if ($res)
					{
						$pos = $obUpload->getPos();
						if ($pos >= $file_size) // file ended
						{
							if($obUpload->Finish())
							{
								$NS['pos'] += $file_size;
								$oBucket = new CCloudStorageBucket($NS['BUCKET_ID']);
								$oBucket->IncFileCounter($file_size);
示例#2
0
 public static function MoveFile($arFile, $obTargetBucket)
 {
     $io = CBXVirtualIo::GetInstance();
     //Try to find suitable bucket for the file
     $bucket = CCloudStorage::FindBucketForFile($arFile, $arFile["FILE_NAME"]);
     if (!is_object($bucket)) {
         return CCloudStorage::FILE_SKIPPED;
     }
     if (!$bucket->Init()) {
         return CCloudStorage::FILE_SKIPPED;
     }
     //Check if this is same bucket as the target
     if ($bucket->ID != $obTargetBucket->ID) {
         return CCloudStorage::FILE_SKIPPED;
     }
     if ($bucket->FileExists($bucket->GetFileSRC($arFile))) {
         //TODO rename file
         return CCloudStorage::FILE_SKIPPED;
     }
     $filePath = "/" . $arFile["SUBDIR"] . "/" . $arFile["FILE_NAME"];
     $filePath = preg_replace("#[\\\\\\/]+#", "/", $filePath);
     if ($arFile["FILE_SIZE"] > $bucket->GetService()->GetMinUploadPartSize()) {
         $obUpload = new CCloudStorageUpload($filePath);
         if (!$obUpload->isStarted()) {
             if ($arFile["HANDLER_ID"]) {
                 $ar = array();
                 if (!CCloudStorage::OnMakeFileArray($arFile, $ar)) {
                     return CCloudStorage::FILE_SKIPPED;
                 }
                 if (!isset($ar["tmp_name"])) {
                     return CCloudStorage::FILE_SKIPPED;
                 }
             } else {
                 $ar = CFile::MakeFileArray($arFile["ID"]);
                 if (!isset($ar["tmp_name"])) {
                     return CCloudStorage::FILE_SKIPPED;
                 }
             }
             $temp_file = CTempFile::GetDirectoryName(2, "clouds") . bx_basename($arFile["FILE_NAME"]);
             $temp_fileX = $io->GetPhysicalName($temp_file);
             CheckDirPath($temp_fileX);
             if (!copy($io->GetPhysicalName($ar["tmp_name"]), $temp_fileX)) {
                 return CCloudStorage::FILE_SKIPPED;
             }
             if ($obUpload->Start($bucket->ID, $arFile["FILE_SIZE"], $arFile["CONTENT_TYPE"], $temp_file)) {
                 return CCloudStorage::FILE_PARTLY_UPLOADED;
             } else {
                 return CCloudStorage::FILE_SKIPPED;
             }
         } else {
             $temp_file = $obUpload->getTempFileName();
             $temp_fileX = $io->GetPhysicalName($temp_file);
             $fp = fopen($temp_fileX, "rb");
             if (!is_resource($fp)) {
                 return CCloudStorage::FILE_SKIPPED;
             }
             $pos = $obUpload->getPos();
             if ($pos > filesize($temp_fileX)) {
                 if ($obUpload->Finish()) {
                     $bucket->IncFileCounter(filesize($temp_fileX));
                     if ($arFile["HANDLER_ID"]) {
                         CCloudStorage::OnFileDelete($arFile);
                     } else {
                         $ar = CFile::MakeFileArray($arFile["ID"]);
                         $fileNameX = $io->GetPhysicalName($ar["tmp_name"]);
                         unlink($fileNameX);
                         @rmdir(substr($fileNameX, 0, -strlen(bx_basename($fileNameX))));
                     }
                     return CCloudStorage::FILE_MOVED;
                 } else {
                     return CCloudStorage::FILE_SKIPPED;
                 }
             }
             fseek($fp, $pos);
             self::$part_count = $obUpload->GetPartCount();
             self::$part_size = $obUpload->getPartSize();
             $part = fread($fp, self::$part_size);
             while ($obUpload->hasRetries()) {
                 if ($obUpload->Next($part)) {
                     return CCloudStorage::FILE_PARTLY_UPLOADED;
                 }
             }
             return CCloudStorage::FILE_SKIPPED;
         }
     } else {
         if ($arFile["HANDLER_ID"]) {
             $ar = array();
             if (!CCloudStorage::OnMakeFileArray($arFile, $ar)) {
                 return CCloudStorage::FILE_SKIPPED;
             }
             if (!isset($ar["tmp_name"])) {
                 return CCloudStorage::FILE_SKIPPED;
             }
         } else {
             $ar = CFile::MakeFileArray($arFile["ID"]);
             if (!isset($ar["tmp_name"])) {
                 return CCloudStorage::FILE_SKIPPED;
             }
         }
         $res = $bucket->SaveFile($filePath, $ar);
         if ($res) {
             $bucket->IncFileCounter(filesize($ar["tmp_name"]));
             if (file_exists($ar["tmp_name"])) {
                 unlink($ar["tmp_name"]);
                 @rmdir(substr($ar["tmp_name"], 0, -strlen(bx_basename($ar["tmp_name"]))));
             }
             if ($arFile["HANDLER_ID"]) {
                 CCloudStorage::OnFileDelete($arFile);
             }
         } else {
             //delete temporary copy
             if ($arFile["HANDLER_ID"]) {
                 unlink($ar["tmp_name"]);
                 @rmdir(substr($ar["tmp_name"], 0, -strlen(bx_basename($ar["tmp_name"]))));
             }
         }
         return $res ? CCloudStorage::FILE_MOVED : CCloudStorage::FILE_SKIPPED;
     }
 }
示例#3
0
				{
					if ($e = $APPLICATION->GetException())
						$strError = $e->GetString();
					else
						$strError = GetMessage('MAIN_DUMP_INT_CLOUD_ERR');
					RaiseErrorAndDie($strError,640,$NS['arc_name']);
				}

				if (is_object($obBucket))
					$obBucket->unsetCheckWordHeader();
			}

			if (!$fp = fopen($NS['arc_name'],'rb'))
				RaiseErrorAndDie(GetMessage("MAIN_DUMP_ERR_OPEN_FILE").' '.$NS['arc_name'], 650, $NS['arc_name']);
			
			fseek($fp, $obUpload->getPos());
			while($obUpload->getPos() < $file_size && haveTime())
			{
				$part = fread($fp, $obUpload->getPartSize());
				$fails = 0;
				$res = false;
				while($obUpload->hasRetries())
				{
					if($res = $obUpload->Next($part, $obBucket))
						break;
					elseif (++$fails >= 10)
						RaiseErrorAndDie('Internal Error: could not init upload for '.$fails.' times', 660, $NS['arc_name']);
				}

				if (!$res)
				{
示例#4
0
         break;
     }
     $tempFile = CTempFile::GetDirectoryName(6, "clouds_upload") . $f->GetName();
     $tempFileX = $io->GetPhysicalName($tempFile);
     CheckDirPath($tempFileX);
     if (copy($_FILES["upload"]["tmp_name"], $tempFileX)) {
         if ($obUpload->Start($obBucket->ID, $fileSize, CFile::GetContentType($tempFile), $tempFile)) {
             $moveResult = CCloudStorage::FILE_PARTLY_UPLOADED;
         } else {
             $strError = GetMessage("CLO_STORAGE_FILE_UNKNOWN_ERROR", array("#CODE#" => "e01"));
         }
     } else {
         $strError = GetMessage("CLO_STORAGE_FILE_UNKNOWN_ERROR", array("#CODE#" => "e04"));
     }
 } else {
     $pos = $obUpload->getPos();
     if ($pos > $fileSize) {
         if ($obUpload->Finish()) {
             $bytes = $fileSize;
             $obBucket->IncFileCounter($fileSize);
             @unlink($io->GetPhysicalName($f->GetPathWithName()));
             $moveResult = CCloudStorage::FILE_MOVED;
         } else {
             $strError = GetMessage("CLO_STORAGE_FILE_UNKNOWN_ERROR", array("#CODE#" => "e02"));
         }
     } else {
         fseek($fp, $pos);
         $part = fread($fp, $obUpload->getPartSize());
         $bytes = $pos + $part;
         $moveResult = CCloudStorage::FILE_SKIPPED;
         while ($obUpload->hasRetries()) {
示例#5
0
     if (!$obUpload->Start($bucket_id, $file_size)) {
         if ($e = $APPLICATION->GetException()) {
             $strError = $e->GetString();
         } else {
             $strError = GetMessage('MAIN_DUMP_INT_CLOUD_ERR');
         }
         RaiseErrorAndDie($strError, $NS['arc_name']);
     }
     if (is_object($obBucket)) {
         $obBucket->unsetCheckWordHeader();
     }
 }
 if (!($fp = fopen($NS['arc_name'], 'rb'))) {
     RaiseErrorAndDie(GetMessage("MAIN_DUMP_ERR_OPEN_FILE") . ' ' . $NS['arc_name'], $NS['arc_name']);
 }
 while ($obUpload->getPos() < $file_size) {
     fseek($fp, $obUpload->getPos());
     $part = fread($fp, $obUpload->getPartSize());
     $fails = 0;
     $res = false;
     while ($obUpload->hasRetries()) {
         if ($res = $obUpload->Next($part, $obBucket)) {
             break;
         } elseif (++$fails >= 10) {
             RaiseErrorAndDie('Internal Error: could not init upload for ' . $fails . ' times', $NS['arc_name']);
         }
     }
     if (!$res) {
         $obUpload->Delete();
         RaiseErrorAndDie(GetMessage("MAIN_DUMP_ERR_FILE_SEND") . ' ' . basename($NS['arc_name']), $NS['arc_name']);
     }
示例#6
0
		if (!$obUpload->isStarted())
		{
			if (!$obUpload->Start(IntOption('dump_send_to_bucket_id'), $file_size))
			{
				if ($e = $APPLICATION->GetException())
					$strError = $e->GetString();
				else
					$strError = GetMessage('MAIN_DUMP_INT_CLOUD_ERR');
				RaiseErrorAndDie($strError);
			}
		}

		if (!$fp = fopen($NS['arc_name'],'rb'))
			RaiseErrorAndDie(GetMessage("MAIN_DUMP_ERR_OPEN_FILE").$NS['arc_name']);

		while($obUpload->getPos() < $file_size)
		{
			$part = fread($fp, $obUpload->getPartSize());
			while($obUpload->hasRetries())
				if($res = $obUpload->Next($part))
					break;
			if (!$res)
			{
				$obUpload->Delete();
				RaiseErrorAndDie(GetMessage("MAIN_DUMP_ERR_FILE_SEND").basename($NS['arc_name']));
			}
		}
		fclose($fp);

		if (!$obUpload->Finish())
		{