• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/integration/bizproc/file.php
  • Класс: BitrixDiskIntegrationBizprocFile
  • Вызов: File::uploadUserFile
static function uploadUserFile(BitrixBizprocFile $file, int $userId): Result
{
	if ($userId <= 0)
	{
		return Result::createFromErrorCode(Error::USER_NOT_FOUND);
	}

	$storage = Driver::getInstance()->getStorageByUserId($userId);
	if (!$storage)
	{
		return Result::createFromErrorCode(Error::OBTAINING_STORAGE);
	}

	$folder = $storage->getFolderForUploadedFiles();
	if (!$folder)
	{
		return Result::createFromErrorCode(Error::FOLDER_ERROR);
	}

	$securityContext = $storage->getSecurityContext($userId);
	if (!$folder->canAdd($securityContext))
	{
		return Result::createFromErrorCode(Error::ACCESS_DENIED);
	}

	$diskFile = $folder->uploadFile($file->getFileArray(), ['CREATED_BY' => $userId], [], true);
	if (!$diskFile)
	{
		$error = $folder->getErrors()[0];

		return Result::createFromErrorCode(Error::FILE_NOT_ADDED, ['reason' => $error->getMessage()]);
	}

	return Result::createOk([
		'file' => new static($diskFile),
		'diskFile' => $diskFile,
		'attachmentId' => FileUserType::NEW_FILE_PREFIX . $diskFile->getId(),
	]);
}