// подключение служебной части пролога require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); //функция транслита function rus2translit($filename) { static $tbl= array( 'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z', 'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p', 'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'y', 'э'=>'e', 'А'=>'A', 'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'G', 'З'=>'Z', 'И'=>'I', 'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R', 'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'Y', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h", 'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ь'=>"", 'ъ'=>"", 'ю'=>"yu", 'я'=>"ya", 'Ё'=>"YO", 'Х'=>"H", 'Ц'=>"TS", 'Ч'=>"CH", 'Ш'=>"SH", 'Щ'=>"SHCH", 'Ъ'=>"", 'Ь'=>"", 'Ю'=>"YU", 'Я'=>"YA", '№'=>"", ' '=>"_", '«'=>"_", '»'=>"_", '-'=>"_", '/'=>"_", '"'=>"_", '('=>"_", ')'=>"_", ); return preg_replace("/__+/","_", strtr(trim($filename), $tbl)); } if(isset($_GET['file'])){ $F_ID=$_GET['file']; $rsFile = CFile::GetByID($F_ID); $arFile = $rsFile->Fetch(); $fName = $arFile["ORIGINAL_NAME"]; // далее от греха подальше нужно провести транслитерацию русских символов на английские $fName=rus2translit($fName); //определяем тип файла $c_Type=$arFile["CONTENT_TYPE"]; // опредеяем путь к файлу $file = CFile::GetPath($F_ID); $file=$_SERVER['DOCUMENT_ROOT'].$file; //проверяем, а есть ли вообще этот файл if(!file_exists($file)) { die("Error: $file not found."); } else { // Set headers header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=".$fName); header("Content-Type: $c_Type"); header("Content-Transfer-Encoding: binary"); // Read the file from disk readfile($file); }; } else {die("ОШИБКА: Не указан ID файла");}; // подключение служебной части эпилога require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");?>