Коллеги, добрый день.
Вопрос о решении проблемы, связанной с закачкой файлов с кириллическими символами в названии, несколько раз поднимался на форуме.
На решение я набрел случайно и спешу поделиться. Суть его сводиться к тому, что в файле FileUpload (/manager/media/browser/mcpuk/connectors/php/Commands/FileUpload.php) нужно дополнить функцию cleanFilename несколькими строками:
function cleanFilename($filename) {
$n_filename="";
$trans = array("а"=>"a","б"=>"b","в"=>"v","г"=>"g", "д"=>"d","е"=>"e","ё"=>"yo","ж"=>"j", "з"=>"z","и"=>"i","й"=>"i","к"=>"k", "л"=>"l","м"=>"m","н"=>"n","о"=>"o", "п"=>"p","р"=>"r","с"=>"s","т"=>"t", "у"=>"y","ф"=>"f","х"=>"h","ц"=>"c", "ч"=>"ch","ш"=>"sh","щ"=>"sh","ы"=>"i", "э"=>"e","ю"=>"u","я"=>"ya",
"А"=>"A","Б"=>"B","В"=>"V","Г"=>"G", "Д"=>"D","Е"=>"E","Ё"=>"Yo","Ж"=>"J", "З"=>"Z","И"=>"I","Й"=>"I","К"=>"K","Л"=>"L", "М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R", "С"=>"S","Т"=>"T","У"=>"Y","Ф"=>"F","Х"=>"H", "Ц"=>"C","Ч"=>"Ch","Ш"=>"Sh","Щ"=>"Sh", "Ы"=>"I","Э"=>"E","Ю"=>"U","Я"=>"Ya",
"ь"=>"","Ь"=>"","ъ"=>"","Ъ"=>""," "=>"-","№"=>"#");
$tmp_filename = strtr($filename, $trans);
$filename = strtolower ($tmp_filename);
//Check that it only contains valid characters
for($i=0;$i<strlen($filename);$i++) if (in_array(substr($filename,$i,1),$this->fckphp_config)) $n_filename.=substr($filename,$i,1);
//If it got this far all is ok
return $n_filename;
}
У меня, по-крайней мере, работает. Только перед тем, как заливать файл на рабочий сервер, пришлось сохранить его в кодировку utf-8.
UPD. Извините, забыл еще один важный момент. Строки 62 и 63 необходимо поменять на:
if (isset($_FILES['NewFile'])&&isset($_FILES['NewFile']['name'])&&($_FILES['NewFile']['name']!=""))
$_FILES['NewFile']['name'] = $this->cleanFilename($_FILES['NewFile']['name']);
UPD. UPD Упс!!! Решение оказывается не единственное. Вот еще один вариант -
http://modxcms.com/forums/index.php/topic,18634.msg204965.html#23