Руские имена файлов

  • Автор темы Timuridze
  • Дата начала
T

Timuridze

#1
В общем возникла необходимость в скрипте файлообменника нашел бесплатную версию XFileSharing Free, поставил как оказалось разработчики ребята русские но ставку на рускоязычных пользователей делать не стали, и сделали скрипт полностью на английском языке. Кое как руссифицировав преодолев миллион для меня проблем, столкнулся с новой, а именно пробелы в именах файлов. ну то есть в самих пробелах ничего критичного нет, файл загружается в конце я получаю ссылку прямую ссылку например
Код:
http://files.kazani.net/OK742FNOXU44/файл с длинным названием на русском с про белами.txt.html
при нажатии на неё открывается окно браузера где пробелы автоматом заменяются на (%20)...всё скачивается, все довольны. НО, кроме прямой ссылки есть там еще ссылка для форумов вида
Код:
[URL=http://files.kazani.net/OK742FNOXU44/файл с длинным названием на русском с про белами.txt.html]файл с длинным названием на русском с про белами.txt - 1.4 Kb[/URL]
Вот эта ссылка на форумах никак показываться не хочет она просто обрезается до первого пробела. Вот есть у этих ребят еще и платная версия скрипта в которой файл с длинным названием на русском с про белами где вместо пробелов подставляется _ (знак подчеркивания).

А теперь что мне удалось выяснить.

1) В оригинальной версии скрипт, в которой все русские буквы заменяли на _, в скрипте upload.cgi , была такая строка
Код:
#$fhash{file_name_orig}=~s/[^a-zA-Z0-9-_\.]/_/gs;
после того как я её закоментил(разрабы подсказали) скрипт стал грузить русские файлы нормально, но с пробелами.

2) Не мудрствуя лукаво я сделал так
Код:
$fhash{file_name_orig}=~s/[^a-zA-Zа-яА-Я0-9-_\.]/_/gs;
скрипт стал грузить в непонятной полуруской полу киргудушной кодировке но с подчеркиваниями вот как на фото


3) Вот полностью код из upload.cgi ответственный за имя файла
Код:
my %fhash;
$fhash{field_name}=$k;
$fhash{file_name_orig} = $filename;
$fhash{file_size} = -s $u;
$fhash{file_descr} = $cg->param("$k\_descr");
$fhash{file_mime} = $cg->uploadInfo($u)->{'Content-Type'};
my $rand = &randchar(12);
while($db->SelectOne("SELECT file_id FROM Files WHERE file_code=?",$rand)){$rand = &randchar(12);}
$fhash{file_name} = $rand;
$fhash{del_id} = &randchar(10);

#$fhash{file_name_orig}=~s/[^a-zA-Z0-9-_\.]/_/gs;
#$fhash{file_name_orig}=~s/[^a-zA-Zа-яА-Я0-9-_\.]/_/gs;
$fhash{file_descr}=~s/</</gs;
$fhash{file_descr}=~s/>/>/gs;
$fhash{file_descr}=~s/"/&quote;/gs;
$fhash{file_descr}=~s/\(/(/gs;
$fhash{file_descr}=~s/\)/)/gs;
$fhash{file_descr}=~s/\#/#/gs;
$fhash{file_descr}=~s/\&/&/gs;

4) В интернете я нашел нуленную платную версию их скрипта...Она сильно отличается от бесплатной но upload.cgi там есть правда код выглядит по другому
Код:
		 $u->{file_size}=-s $u->{file_tmp};
$u->{file_name_orig}||=$fname2;
$u->{file_name_orig}=~s/.+\/(.+)$/$1/;
$u->{file_name_orig}=~s/\.html?$//i;
$u->{file_name_orig}=~s/\?.*$//;
$u->{file_name_orig}=~s/\?+//g;
$u->{file_name_orig}||=join('', map int rand(10), 1..5);
if($u->{rslee} && $resp->content_type eq 'text/html')
5) На всякий случай страница на форуме где я веду по большей части монолог о русификации. Вот тема про руссификацию а здесь речь идет о пробелах в названиях файлов


Вообщем кто чем может помочь? Просьба не предлагать забить и найти другой скрипт, я времени убил на это, да и устраивает он меня всем.
Во вложении мой upload.cgi Посмотреть вложение upload.cgi.zip
 

Вложения