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