- Модуль: ui
- Путь к файлу: ~/bitrix/modules/ui/lib/FileUploader/Chunk.php
- Класс: BitrixUIFileUploaderChunk
- Вызов: Chunk::validate
public function validate(Configuration $config): Result
{
$result = new Result();
if (in_array(mb_strtolower($this->getName()), $config->getIgnoredFileNames()))
{
return $result->addError(new UploaderError(UploaderError::FILE_NAME_NOT_ALLOWED));
}
if ($config->getMaxFileSize() !== null && $this->getFileSize() > $config->getMaxFileSize())
{
return $result->addError(
new UploaderError(
UploaderError::MAX_FILE_SIZE_EXCEEDED,
[
'maxFileSize' => CFile::formatSize($config->getMaxFileSize()),
'maxFileSizeInBytes' => $config->getMaxFileSize(),
]
)
);
}
if ($this->getFileSize() < $config->getMinFileSize())
{
return $result->addError(
new UploaderError(
UploaderError::MIN_FILE_SIZE_EXCEEDED,
[
'minFileSize' => CFile::formatSize($config->getMinFileSize()),
'minFileSizeInBytes' => $config->getMinFileSize(),
]
)
);
}
if (!$this->validateFileType($config->getAcceptedFileTypes()))
{
return $result->addError(new UploaderError(UploaderError::FILE_TYPE_NOT_ALLOWED));
}
$width = 0;
$height = 0;
if (CFile::isImage($this->getName(), $this->getType()))
{
$image = new FileImage($this->getFile()->getPhysicalPath());
$imageInfo = $image->getInfo(false);
if (!$imageInfo)
{
if ($config->getIgnoreUnknownImageTypes())
{
$result->setData(['width' => $width, 'height' => $height]);
return $result;
}
else
{
return $result->addError(new UploaderError(UploaderError::IMAGE_TYPE_NOT_SUPPORTED));
}
}
$width = $imageInfo->getWidth();
$height = $imageInfo->getHeight();
if ($imageInfo->getFormat() === FileImage::FORMAT_JPEG)
{
$exifData = $image->getExifData();
if (isset($exifData['Orientation']) && $exifData['Orientation'] >= 5 && $exifData['Orientation'] <= 8)
{
[$width, $height] = [$height, $width];
}
}
if (!$config->shouldTreatOversizeImageAsFile())
{
$imageData = new FileData($this->getName(), $this->getType(), $this->getSize());
$imageData->setWidth($width);
$imageData->setHeight($height);
$validationResult = $config->validateImage($imageData);
if (!$validationResult->isSuccess())
{
return $result->addErrors($validationResult->getErrors());
}
}
}
$result->setData(['width' => $width, 'height' => $height]);
return $result;
}