• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/uf/controller.php
  • Класс: BitrixDiskUfController
  • Вызов: Controller::processActionHandleFile
function processActionHandleFile($hash, &$file, &$package, &$upload, &$error)
{
	$errorCollection = new ErrorCollection();
	$storage = Driver::getInstance()->getStorageByUserId($this->getUser()->getId());
	if(!$storage)
	{
		$errorCollection->add(array(new Error(Loc::getMessage('DISK_UF_CONTROLLER_ERROR_COULD_NOT_FIND_USER_STORAGE'), self::ERROR_COULD_NOT_FIND_USER_STORAGE)));
		$error = implode(" ", $errorCollection->toArray());
		return false;
	}
	$data = array(
		'NAME' => $file['name'],
		'CREATED_BY' => $this->getUser()->getId(),
	);
	if(mb_strpos($file['name'], 'videomessage') === 0)
	{
		$folder = $storage->getFolderForRecordedFiles();
		$data['CODE'] = File::CODE_RECORDED_FILE;
	}
	else
	{
		$folder = $storage->getFolderForUploadedFiles();
	}
	if(!$folder)
	{
		$errorCollection->add(array(new Error(Loc::getMessage('DISK_UF_CONTROLLER_ERROR_COULD_NOT_FIND_FIND_FOLDER'), self::ERROR_COULD_NOT_FIND_FOLDER)));
		$error = implode(" ", $errorCollection->toArray());
		return false;
	}

	$urlManager = Driver::getInstance()->getUrlManager();
	if($folder->canAdd($storage->getCurrentUserSecurityContext()))
	{
		$fileModel = $folder->uploadFile($file["files"]["default"], $data, array(), true);

		if($fileModel)
		{
			if($fileModel->getView()->isShowTransformationUpgradeMessage())
			{
				$notification = Loc::getMessage('DISK_UF_CONTROLLER_FILE_IS_TOO_BIG_FOR_TRANSFORMATION');
			}
			$name = $fileModel->getName();
			$id = FileUserType::NEW_FILE_PREFIX.$fileModel->getId();
			$fileType = $fileModel->getView()->getEditorTypeFile();

			$file = array_merge(
				$file,
				array(
					'id' => $id, // TODO delete this after main 17.0.0 release
					'attachId' => $id,
					'fileId' => $fileModel->getId(),
					'originalId' => $fileModel->getId(),
					'name' => $name,
					'label' => getFileNameWithoutExtension($name),
					'ext' => $fileModel->getExtension(),
					'size' => CFile::formatSize($fileModel->getSize()),
					'sizeInt' => $fileModel->getSize(),
					'storage' => $storage->getProxyType()->getTitleForCurrentUser() . ' / ' . $folder->getName(),
					'canChangeName' => true,
				),
				(TypeFile::isImage($fileModel) ? [
					'previewUrl' => $urlManager->getUrlForShowFile(
						$fileModel,
						array_merge([
							'width' => self::$previewParams['width'],
							'height' => self::$previewParams['height'],
							'exact' => 'Y',
						], ($this->request->getPost('previewParams') ?? []))
					)
				] : array()),
				(!empty($fileType) ? array (
					'fileType' => $fileType,
				): array()),
				(!empty($notification) ? array (
					'notification' => $notification,
				): array())
			);
		}
		else
		{
			$error = (is_array($folder->getErrors()) ? implode(" ", $folder->getErrors()) : 'The file has not been saved');
		}
	}
	return (empty($error));
}