Вот пример:
Код | #!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); use CGI; $CGI::POST_MAX = 1024 ** 2; # Файлы размером больше 1 мегобайта не грузить. # Создаём объект CGI my $cgi = new CGI();
# Подпрограмма выводит форму sub show_form { my $ms = shift || ""; print $cgi->header(-charset => "Windows-1251"), $cgi->start_html(-title => "Форма"), $cgi->start_multipart_form(-action => $cgi->url(-relative=>1)), $cgi->p($cgi->b("Укажите путь к изображению, которое хотите загрузить на сервер"));
# Если в подпрограмму была передана строка, то это говорит о том, что произошла ошибка # Выводим её пользователю if ($ms) { # Определяем стили сообщения об ошибке, вообше-то лучше передавать их в подпрограмму # Тогда появится возможность применять и другие стили для вывода сообщений. Например: # Warnings - синим цветом, а Fatal errors - красным, Success operation - зелёным. my $style = "background-color: #cc0000;color: #ffffff;padding: 5px; font-weight: bold; width: 300px;"; $style .= "border-color: #000000; border-style: solid; border-width: 1px; font-size: 14px"; print $cgi->div({-style => $style},$ms), $cgi->br(); }
print $cgi->filefield(-name => "myfile"), $cgi->br(), $cgi->br(), $cgi->submit(-name => "send",-value => "Отправить"), $cgi->end_form(), $cgi->end_html(); exit 0; }
# Подпрограмма выводит изображение sub show_file { my $file = $cgi->param('myfile'); my $type = $cgi->uploadInfo($file)->{'Content-Type'}; &show_form("Недопустимый тип файла '$type'.Принимаются только файлы jpg, png, gif.") unless ($type =~ /(?:p?jpe?g|png|gif)$/i); print $cgi->header(-type => $type); binmode STDOUT; print <$file>; }
# Условия программы if (defined $cgi->param('myfile') && !$cgi->param('myfile')) { &show_form("Вы забыли указать путь к файлу."); } elsif (defined $cgi->param('myfile') && $cgi->param('myfile')) { &show_file(); } else { &show_form(); }
|
|