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