Проблема с парсингом имени файла, при закачке файла через веб форму, Stan, 15-Дек-02, 13:56 [смотреть все]Перл не может пропарсить имя файла, если файл лежит в каталоге, названном по русски. Например "C:\Мои документы\1.jpg". Полное имя файла выводит "C:\М", а иногда правильно. Может кто знает в чем дело? Вот сорца: my $foto = param ('foto'); if($foto ne "") { my $DIR = "../foto"; # не забудьте "chmod 777 pics" my $filename; $news= $news."|$foto|"; if ($foto !~ /([\w-]+ \. (?: gif | jpe?g ))$/ix) #только имя,путь выкидывается { $news= $news."$1 Файл должен быть jpg или gif"; $foto="NULL"; } else { $filename="$1"; if (not sysopen FILE, "$DIR/$filename", O_EXCL | O_CREAT | O_WRONLY, 0444) { $news= $news."Hе могу создать $DIR/$1: $!"; }else{ binmode FILE; print FILE while (<$foto>); close FILE; }; $foto="'$filename'"; }; }; Заранее благодарен!
|
- RE: Проблема с парсингом имени файла, при закачке файла через ве..., Konst, 14:47 , 15-Дек-02 (1)
>Перл не может пропарсить имя файла, если файл лежит в каталоге, названном >по русски. Например "C:\Мои документы\1.jpg". Полное имя файла выводит "C:\М", а иногда правильно. >my $foto = param ('foto'); param ('foto') - это и есть fullpath??? > if ($foto !~ /([\w-]+ \. (?: gif | jpe?g ))$/ix) #только имя,путь выкидывается > { >; > } else { > $filename="$1"; а)[\w] - работает только с англ.буквами (if not use locale) б) при такой конструкции $1 - совсем не обязательно == ([\w-]+ \. (?: gif | jpe?g ); в) if ($foto =~ /^.*([^\/\\/]+ (gif | jpe?g ))$/i) { $fn = $1 }
|