• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/uf/controller.php
  • Класс: BitrixDiskUfController
  • Вызов: Controller::processActionSaveAsNewFile
protected function processActionSaveAsNewFile()
{
	$this->checkRequiredPostParams(array('cloudImportId',));

	if($this->errorCollection->hasErrors())
	{
		$this->sendJsonErrorResponse();
	}
	$cloudImport = CloudImportEntry::load(array(
		'ID' => $this->request->getPost('cloudImportId'),
		'USER_ID' => $this->getUser()->getId(),
	), array('TMP_FILE'));
	if(!$cloudImport)
	{
		$this->errorCollection->addOne(new Error('Could not find cloud import', self::ERROR_COULD_NOT_FIND_CLOUD_IMPORT));
		$this->sendJsonErrorResponse();
	}

	$documentHandlersManager = Driver::getInstance()->getDocumentHandlersManager();
	$documentHandler = $documentHandlersManager->getHandlerByCode($cloudImport->getService());
	if(!$documentHandler)
	{
		$this->errorCollection->add($documentHandlersManager->getErrors());
		$this->sendJsonErrorResponse();
	}
	if(!$documentHandler->checkAccessibleTokenService())
	{
		$this->errorCollection->add(array(new Error(Loc::getMessage('DISK_UF_CONTROLLER_ERROR_COULD_NOT_WORK_WITH_TOKEN_SERVICE_B24', array('#NAME#' => $documentHandler::getName())), self::ERROR_COULD_NOT_WORK_WITH_TOKEN_SERVICE)));
		$this->errorCollection->add($documentHandler->getErrors());
		$this->sendJsonErrorResponse();
	}

	if(!$documentHandler->queryAccessToken()->hasAccessToken() || $documentHandler->isRequiredAuthorization())
	{
		$this->sendNeedAuth($documentHandler->getUrlForAuthorizeInTokenService('opener'));
	}

	$storage = Driver::getInstance()->getStorageByUserId($this->getUser()->getId());
	$folder = $storage->getSpecificFolderByCode($documentHandler::SPECIFIC_FOLDER_CODE);

	$importManager = new CloudImportImportManager($documentHandler);
	$file = $importManager->saveFile($cloudImport, $folder);
	if(!$file)
	{
		$this->errorCollection->add($importManager->getErrors());
		$this->sendJsonErrorResponse();
	}

	$fileInfos = DiskUploaderController::getFileInfo([FileUserType::NEW_FILE_PREFIX . $file->getId()]);

	$this->sendJsonSuccessResponse(array(
		'file' => array(
			'id' => $file->getId(),
			'fileInfo' => $fileInfos[0] ?? [],
			'ufId' => FileUserType::NEW_FILE_PREFIX . $file->getId(),
			'name' => $file->getName(),
			'size' => $file->getSize(),
			'sizeFormatted' => CFile::formatSize($file->getSize()),
			'folder' => $file->getParent()->getName(),
			'storage' => $file->getParent()->getName(),
			'previewUrl' => TypeFile::isImage($file)?
				Driver::getInstance()->getUrlManager()->getUrlForShowFile($file, array("width" => self::$previewParams["width"], "height" => self::$previewParams["height"])) : ''
		),
	));
}