Forum Webscript.Ru

Программирование => Perl => Тема начата: nobody от 14 Сентября 2001, 21:19:54

Название: Загрузка на сервер файла JPG
Отправлено: nobody от 14 Сентября 2001, 21:19:54
Покапался тут на форуме и нашел только один пример:

$filename=$KARTINKA; №Нужно для имени файла
$filename =~ s/^.*(\\\\|\\/)//; # вырезает имя из общей локальной дороги

 open (OUTFILE,">$filename");
    binmode $KARTINKA; # Обезательна для картинок и других Бинари
 binmode OUTFILE; # Обезательна для картинок и других Бинари
 while ($bytesread=read($KARTINKA,$buffer,1024)) {
 print OUTFILE $buffer;
     }
close (OUTFILE);

но он у меня неработает, может у меня руки не истого места ростут....

приходит файл допустим с формы $FORM{\'FILE\'}:rolleyes:
Название: Re: Загрузка на сервер файла JPG
Отправлено: Chs от 14 Сентября 2001, 22:51:45
Цитировать
Сообщение от nobody

но он у меня неработает, может у меня руки не истого места ростут....

Что конкретно не работает?
Картинка загружается на сервер?
Сообщения об ошибках?
Название: <---()--->
Отправлено: nobody от 14 Сентября 2001, 23:27:57
картинка негрузиться на сервер...
Название: Re: <---()--->
Отправлено: Chs от 15 Сентября 2001, 00:17:53
Цитировать
Сообщение от nobody
картинка негрузиться на сервер...

И не будет.:)
По $FORM{\'FILE\'} уже понятно, что идет некорректный разбор данных формы.
perldoc CGI в части param.
И скрипт в форум полностью.
Приведенный кусок кода - правильный.
Название: Re: Re: <---()--->
Отправлено: nobody от 15 Сентября 2001, 00:35:45
Цитировать
Сообщение от Chs

И не будет.:)
По $FORM{\'FILE\'} уже понятно, что идет некорректный разбор данных формы.
perldoc CGI в части param.
И скрипт в форум полностью.
Приведенный кусок кода - правильный.
 


Я его кудато уже заховал...

Я открывал HTML в форму вставлял путь к файлу
и помещал его в $FORM{\'FILE\'}

ну и вроде все....
Название: Re: Re: Re: <---()--->
Отправлено: Chs от 15 Сентября 2001, 00:46:18
Цитировать
Сообщение от nobody


Я его кудато уже заховал...

Я открывал HTML в форму вставлял путь к файлу
и помещал его в $FORM{\'FILE\'}

ну и вроде все....

Все телепаты форума в отпуске...
Название: Re: Re: Re: Re: <---()--->
Отправлено: NAS от 15 Сентября 2001, 00:48:40
Цитировать
Сообщение от Chs

Все телепаты форума в отпуске...

А телепат у нас Kakadu, который давно в отпуске :)
Название: Re: Re: Re: Re: Re: <---()--->
Отправлено: nobody от 15 Сентября 2001, 01:07:38
Цитировать
Сообщение от NAS

А телепат у нас Kakadu, который давно в отпуске :)


Пришлось вспоминать куда засунул


rint "Content-Type: text/html\\nPragma: no-cache\\nExpires: Tue, 1 Jan 1980 00:00:00 GMT\\n\\n";
$config="conf";
&ReadCfg;
&getFORM;

($bpath,$_) = split(/;/,$CFG{\'bpath\'});
&Step1 if $FORM{\'ac\'} eq \'s1\';
&Search;

sub Search{
   open IN, $CFG{\'searchhtm\'};
    print ;
    close IN;
};

sub ReadCfg {
  my (@cfg, $cfg);
  open IN, $config || die "trouble open $config";
  @cfg=;
  close IN;
  foreach $cfg (@cfg){
    if (substr($cfg,0,1) ne \'#\') {
      chomp ($cfg);
      ($name,$value) = split(/=/,$cfg,2);
      $CFG{$name}=$value;
    }
  }
};

sub CheckForm{
   my $serr=$CFG{\'joinwrong\'};
  my @swr=split(/->/,$CFG{\'searchwrongwords\'});
  $serr = $serr . " @swr[0] " if $FORM{\'FILE\'} eq \'\';
    if($serr ne $CFG{\'joinwrong\'}){
     undef $/;
    open cfIN, $CFG{\'searchhtm\'};
    my $mess = ;
    close cfIN;
     $/="\\n";
    $mess =~ s//$serr/g;
    foreach $i (keys %FORM){
      $mess =~ s/>/ value="$FORM{$i}">/g;
    };
    print $mess;
    exit;
  }
};

$filename=$FORM{\'FILE\'};
$filename =~ s/^.*(\\\\|\\/)//;
 open (OUTFILE,">$filename");
    binmode $FORM{\'FILE\'};
 binmode OUTFILE;
 while ($bytesread=read($FORM{\'FILE\'},$buffer,1024)) {
 print OUTFILE $buffer;
     }
close (OUTFILE);

sub getFORM{
read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ s///g;
$name =~ s/<([^>]|\\n)*>//g;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s///g;
$value =~ s/<([^>]|\\n)*>//g;
$FORM{$name} = $value;}
$act = $FORM{act};
};

Так что телепатов ненадо...
Название: Re: Re: Re: Re: Re: Re: <---()--->
Отправлено: Chs от 15 Сентября 2001, 07:17:35
Цитировать
Сообщение от nobody

sub getFORM{
read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ s///g;
$name =~ s/<([^>]|\\n)*>//g;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s///g;
$value =~ s/<([^>]|\\n)*>//g;
$FORM{$name} = $value;}
$act = $FORM{act};
};

Так что телепатов ненадо...

Как и предполагал - неверный разбор данных формы.
При enctype=multipart/form-data все выглядит несколько не так.:)
Люди! Пользуйтесь модулем CGI и не изобретайте велосипедов.:)
Название: Re: Re: Re: Re: Re: Re: Re: <---()--->
Отправлено: Чужой от 19 Сентября 2001, 12:37:03
Цитировать
Сообщение от Chs

Как и предполагал - неверный разбор данных формы.
При enctype=multipart/form-data все выглядит несколько не так.:)
Люди! Пользуйтесь модулем CGI и не изобретайте велосипедов.:)

К сожалению у некотрых админов руки растут не от туда откуда надо в результате модуль CGI или старый (нет upload) или его вообще нет (вот этот вариант меня вообще убивает).
Название: Re: Re: Re: Re: Re: Re: Re: Re: <---()--->
Отправлено: Chs от 19 Сентября 2001, 13:49:30
Цитировать
Сообщение от Чужой

К сожалению у некотрых админов руки растут не от туда откуда надо в результате модуль CGI или старый (нет upload) или его вообще нет (вот этот вариант меня вообще убивает).

Никто не мешает установить CGI в свою директорию, его даже компилировать не надо.:)
Название: Загрузка на сервер файла JPG
Отправлено: от 15 Октября 2001, 11:12:29
Ну а если и есть CGI.pm то как тогда им юзатся?
Название: Загрузка на сервер файла JPG
Отправлено: Chs от 15 Октября 2001, 23:05:20
perldoc CGI :)
Название: Загрузка на сервер файла JPG
Отправлено: Vot от 10 Апреля 2004, 23:44:41
Подскажите пожалуйста, проблема в следующем:
Пытаюсь зделать UpLoad. Пишу:
  open(Z, ">$path/img/foto/$mydate.jpg");
  binmode (Z);
  syswrite (Z, $file); # и print тоже писал
close(Z);

Но если UpLoad-ый файлик открыть в HEX редакторе, то все символы \'00\' заменяются на \'20\' (кстати и то и другое есть пробел).
Прям не знаю что и делать?
Название: Загрузка на сервер файла JPG
Отправлено: Vot от 11 Апреля 2004, 19:52:33
Нет, поправочка \'00\' - это не пробел, но тем неменее.
Дело в том что я пытаюсь залить файлы на h10.ru, но локально у меня все работает великолепно. Может ето у них какие нибудь методы защиты работают?
Название: Загрузка на сервер файла JPG
Отправлено: Chs от 11 Апреля 2004, 20:14:52
Русский впач....
Фак читаем?