• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/site_checker.php
  • Класс: CSiteCheckerTest
  • Вызов: CSiteCheckerTest::check_upload
function check_upload($big = false, $raw = false)
{
	if (($sp = ini_get("upload_tmp_dir")))
	{
		if (!file_exists($sp))
			return $this->Result(false,GetMessage('SC_NO_TMP_FOLDER').' ('.htmlspecialcharsbx($sp).')');
		elseif (!is_writable($sp))
			return $this->Result(false,GetMessage('SC_TMP_FOLDER_PERMS').' ('.htmlspecialcharsbx($sp).')');
	}

	if (defined('BX_TEMPORARY_FILES_DIRECTORY'))
	{
		$sp = BX_TEMPORARY_FILES_DIRECTORY;
		if (!file_exists($sp))
			return $this->Result(false,GetMessage('SC_NO_TMP_FOLDER').' (BX_TEMPORARY_FILES_DIRECTORY: '.htmlspecialcharsbx($sp).')');
		elseif (!is_writable($sp))
			return $this->Result(false,GetMessage('SC_TMP_FOLDER_PERMS').' (BX_TEMPORARY_FILES_DIRECTORY: '.htmlspecialcharsbx($sp).')');
	}

	$binaryData = '';
	for($i=40;$i<240;$i++)
		$binaryData .= chr($i);
	if ($big)
		$binaryData = str_repeat($binaryData, 21000);

	if ($raw)
		$POST = $binaryData;
	else
	{
		$boundary = '--------'.md5(checker_get_unique_id());

		$POST = "--$boundaryrn";
		$POST.= 'Content-Disposition: form-data; name="test_file"; filename="site_checker.bin'."rn";
		$POST.= 'Content-Type: image/gif'."rn";
		$POST.= "rn";
		$POST.= $binaryData."rn";
		$POST.= "--$boundaryrn";
	}

	$strRequest = "POST "."/bitrix/admin/site_checker.php?test_type=upload_test&unique_id=".checker_get_unique_id()."&big=".($big ? 1 : 0)."&raw=".($raw ? 1 : 0)." HTTP/1.1rn";
	$strRequest.= "Host: ".$this->host."rn";
	if (!$raw)
		$strRequest.= "Content-Type: multipart/form-data; boundary=$boundaryrn";
	$strRequest.= "Content-Length: ".strlen($POST)."rn";
	$strRequest.= "rn";
	$strRequest.= $POST;

	if ($res = $this->ConnectToHost())
		return IsHttpResponseSuccess($res, $strRequest);
	return false;
}