Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Закачка файлов


Автор: Гость_mcx 26.6.2004, 18:42
кто знает другие способы закачки файлов на сервер кроме использования возможностей модуля CGI

Автор: korob2001 26.6.2004, 20:45
Вот пример без использования CGI.pm
Код

#-> Подпрограмма получает имя файла и имя каталога куда
#    нужно загрузить файл загружает его в указанную дерикторию
#    и возвращает true - если файл
#   успешно загружен и false если была ошибка
sub writeUploadFile {
  my $file = shift;
  my $dir  = shift;
  my $uri  = $file;
  my ( $size, $buff, $bytes );
       $size = $bytes = 0;
       $file =~ s/\s+$//;
       return(0) unless $file =~ /\.(?:gif|jpg)$/i;
       $file =~ s/\w://i;
       $file =~ s/([^\/\\]+)$//;
       $file = $1;
       $file =~ s/\.\.+//g;
       $file =~ s/^\s+//;
       $file =~ s/\s+//g;
       return(0) unless $file =~ /^(?:[A-Z,a-z,0-9]+\.(?:gif|jpg))$/i;
  local *SAVE;
   open (SAVE, ">$dir/$file") or die "Can\'t create file \"$dir/$file\": $!";
    binmode SAVE;
    while ($bytes = read($uri, $buff, 2096)) {
      $size += $bytes;
      print SAVE $buff;
    }
   close(SAVE) or die "Can\'t close file \"$dir/$file\": $!";
if ( -e "$dir/$file" ) {
   return(1);
} else {
   return(0);
}
}

Правда она загружает только файлы с расширением .gif, .jpg, но принип думаю понятен. Кстати не сложно сделать что бы, подпрограмма в качестве истинного значения передавала размер загруженного файла. Думаю размер, полезная информация при загрузке файла на сервер.

Удачи

Автор: lazarevmax_mcx 27.6.2004, 18:31
спасибо за подпрограмму

толбко я чето непонял для чего нужна переменная
url?
file?
dir?
Добавлено @ 18:36
аа вижу $url=$file

ок все понятно
спасибо!!!

Автор: korob2001 28.6.2004, 11:01
Переменные $file и $dir получают параметры ( собственно это написано в начале кода, в коментариях ). Переменная $uri нам необходима как копия переменной $file, так как переменная $file будет приобразована до имени файла (путь к файлу вырезается). При чтении файла с помощью read($uri, $buff, 2096) нам необходимо в первом параметре передать не только имя файла, но и путь к нему. Потому нам нужна копия переменной $file.
Переменная $file преобразуется до имени фала для того, что бы на сервере файл был с тем же именем, что и на машине юзера.

Удачи.

Автор: Sable 31.8.2004, 09:24
Модель Net::FTP. Все примеры есть в man'e.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)