URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 952
[ Назад ]

Исходное сообщение
"Проблема с парсингом имени файла, при закачке файла через веб форму"

Отправлено 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 , 15-Дек-02 14:47 
>Перл не может пропарсить имя файла, если файл лежит в каталоге, названном
>по русски. Например "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 }