- Модуль: 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;
}