• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/document/cloudimport/importmanager.php
  • Класс: BitrixDiskDocumentCloudImportImportManager
  • Вызов: ImportManager::saveFile
public function saveFile(Entry $entry, Folder $folder)
{
	if(!$entry->getTmpFile())
	{
		$this->errorCollection->addOne(new Error('Could not find cloud import', self::ERROR_COULD_NOT_FIND_CLOUD_IMPORT));
		return null;
	}

	if($entry->getContentSize() != $entry->getDownloadedContentSize())
	{
		$this->errorCollection->addOne(new Error('Content size != downloaded content size'));
		return null;
	}

	$fileData = new DocumentFileData;
	$fileData->setId($entry->getServiceObjectId());
	$fileMetadata = $this->documentHandler->getFileMetadata($fileData);
	if(!$fileMetadata || empty($fileMetadata['name']))
	{
		$this->errorCollection->add($this->documentHandler->getErrors());
		return null;
	}

	$name = $fileMetadata['name'];
	if(!getFileExtension($name))
	{
		$name = $this->recoverExtensionInName($name, $fileMetadata['mimeType']);
	}

	$tmpFile = $entry->getTmpFile();
	$fileArray = CFile::makeFileArray($tmpFile->getAbsolutePath());
	if (!$fileArray)
	{
		return null;
	}

	$file = $folder->uploadFile(
		$fileArray,
		array(
			'NAME' => $name,
			'CREATED_BY' => $this->documentHandler->getUserId(),
			'CONTENT_PROVIDER' => $this->documentHandler::getCode(),
		),
		array(),
		true
	);

	if(!$file)
	{
		$tmpFile->delete();
		$this->errorCollection->add($folder->getErrors());
		return null;
	}
	$entry->linkObject($file);

	return $file;
}