- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/ui/fileinput.php
- Класс: BitrixMainUIFileInput
- Вызов: FileInput::getFile
private function getFile($fileId = "", $inputName = "file", $getDataFromRequest = false)
{
$result = null;
$properties = array();
if (is_array($fileId) && array_key_exists("ID", $fileId))
{
$properties = $fileId;
unset($properties["ID"]);
$fileId = $fileId["ID"];
}
if ($fileId > 0 && ($ar = CFile::GetFileArray($fileId)) && is_array($ar))
{
$name = ($ar['ORIGINAL_NAME'] <> ''?$ar['ORIGINAL_NAME']:$ar['FILE_NAME']);
$result = array(
'fileId' => $fileId,
'id' => $this->id.'_'.$fileId,
'name' => $name,
'description_name' => self::getInputName($inputName, "_descr"),
'description' => str_replace('"', """, $ar['DESCRIPTION']),
'size' => $ar['FILE_SIZE'],
'type' => $ar['CONTENT_TYPE'],
'input_name' => $inputName,
'input_value' => $fileId,
'entity' => (($ar["WIDTH"] > 0 && $ar["HEIGHT"] > 0) ? "image" : "file"),
'ext' => GetFileExtension($name),
'real_url' => $ar['SRC']
);
if ($result['entity'] == "image")
{
$result['tmp_url'] = FileInputUnclouder::getSrc($ar);
$result['preview_url'] = FileInputUnclouder::getSrcWithResize($ar, array('width' => 200, 'height' => 200));
$result['width'] = $ar["WIDTH"];
$result['height'] = $ar["HEIGHT"];
}
}
else
{
$file = null;
if (is_array($fileId) && array_key_exists("tmp_name", $fileId))
$file = array(
"tmp_name" => $fileId["tmp_name"],
"type" => (array_key_exists("type", $fileId) ? $fileId["type"] : null),
"name" => (array_key_exists("name", $fileId) ? $fileId["name"] : null),
"description" => (array_key_exists("description", $fileId) ? $fileId["description"] : null)
);
else if (is_string($fileId))
$file = array(
"tmp_name" => $fileId,
"type" => null,
"name" => null,
"description" => null
);
if (is_array($file) && ($paths = Uploader::getPaths($file["tmp_name"])) &&
($flTmp = CBXVirtualIo::GetInstance()->GetFile($paths["tmp_name"])) && $flTmp->IsExists())
{
$name = is_string($file["name"]) && $file["name"] <> '' ? $file["name"] : $flTmp->getName();
$result = array(
'id' => md5($file["tmp_name"]),
'name' => $name,
'description_name' => self::getInputName($inputName, "_descr"),
'description' => is_string($file["description"]) && $file["description"] <> '' ? $file["description"] : "",
'size' => $flTmp->GetFileSize(),
'type' => is_string($file["type"]) && $file["type"] <> '' ? $file["type"] : $flTmp->getType(),
'input_name' => $inputName,
'input_value' => $file["tmp_name"],
'entity' => "file",
'ext' => GetFileExtension($name),
'real_url' => $paths["tmp_url"]
);
$info = (new BitrixMainFileImage($paths["tmp_name"]))->getInfo();
if ($info)
{
$result['entity'] = "image";
$result['tmp_url'] = $paths["tmp_url"];
if (($mime = $info->getMime()) <> '')
$result['type'] = $mime;
$result['width'] = $info->getWidth();
$result['height'] = $info->getHeight();
}
}
}
if (is_array($result) && !empty($this->elementSetts["properties"]))
{
$request = null;
if ($getDataFromRequest === true)
{
$request = BitrixMainContext::getCurrent()->getRequest();
$result["description"] = $request->isPost() ? $request->getPost($result["description_name"]) : $request->getQuery($result["description_name"]);
}
foreach ($this->elementSetts["properties"] as $key)
{
$result[$key."_name"] = self::getInputName($inputName, "_".$key);
$result[$key] = (is_null($request) ? $properties[$key] : ($request->isPost() ? $request->getPost($result[$key."_name"]) : $request->getQuery($result[$key."_name"])));
}
}
return $result;
}