- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/ui/uploader/file.php
- Класс: BitrixMainUIUploaderFile
- Вызов: File::checkFile
static function checkFile(&$file, File $f, $params)
{
$result = new Result();
if ($file["error"] > 0)
$result->addError(new Error(File::getUploadErrorMessage($file["error"]), "BXU347.2.9".$file["error"]));
else if (array_key_exists("tmp_url", $file))
{
$url = new Uri($file["tmp_url"]);
if ($url->getHost() == '' && ($tmp = CFile::MakeFileArray($url->getPath())) && is_array($tmp))
{
$file = array_merge($tmp, $file);
}
else if ($url->getHost() <> '' &&
self::http()->query("HEAD", $file["tmp_url"]) &&
self::http()->getStatus() == "200")
{
$file = array_merge($file, array(
"size" => self::http()->getHeaders()->get("content-length"),
"type" => self::http()->getHeaders()->get("content-type")
));
}
else
{
$result->addError(new Error(Loc::getMessage("BXU_FileIsNotUploaded"), "BXU347.2"));
}
}
else if (isset($file['bucketId']) && !CloudStorage::checkBucket($file['bucketId']))
{
$result->addError(new Error(Loc::getMessage("BXU_FileIsNotUploaded"), "BXU347.2.8"));
}
else if (!isset($file['bucketId']) && (!file_exists($file['tmp_name']) || (
(mb_substr($file["tmp_name"], 0, mb_strlen($params["path"])) !== $params["path"]) &&
!is_uploaded_file($file['tmp_name'])
))
)
{
$result->addError(new Error(Loc::getMessage("BXU_FileIsNotUploaded"), "BXU347.2.7"));
}
if ($result->isSuccess())
{
$params["uploadMaxFilesize"] = $params["uploadMaxFilesize"] ?? 0;
$params["allowUploadExt"] = $params["allowUploadExt"] ?? false;
$params["allowUpload"] = $params["allowUpload"] ?? null; // 'I' - image, 'F' - files with ext in $params["allowUploadExt"]
if ($params["uploadMaxFilesize"] > 0 && $f->getSize() > $params["uploadMaxFilesize"])
{
$error = GetMessage("FILE_BAD_SIZE")." (".CFile::FormatSize($f->getSize()).").";
}
else
{
$name = $f->getName();
$ff = array_merge($file, array("name" => $name));
if ($params["allowUpload"] === "I")
{
$error = CFile::CheckFile($ff, $params["uploadMaxFilesize"], "image/", CFile::GetImageExtensions());
}
elseif ($params["allowUpload"] === "F" && $params["allowUploadExt"])
{
$error = CFile::CheckFile($ff, $params["uploadMaxFilesize"], false, $params["allowUploadExt"]);
}
else
{
$error = CFile::CheckFile($ff, $params["uploadMaxFilesize"]);
}
}
if ($error !== "")
$result->addError(new Error($error, "BXU347.3"));
}
if (preg_match("/^(.+?)\.ch(\d+)\.(\d+)\.chs(\d+)$/", $file["code"], $matches))
{
$file["code"] = $matches[1];
$file["number"] = $matches[2];
$file["start"] = $matches[3];
$file["count"] = $matches[4];
$file["chunkId"] = self::getChunkKey($file["count"], $file["number"]);
}
$file["~size"] = $f->getSize();
$file["~name"] = $f->getName();
$file["~type"] = $f->getType();
return $result;
}