Гм, проверьте логи :) Справочное руководство CGI
$ filename - это не имя файла, которое вы хотите использовать, это может быть что угодно, что посылает браузер, даже F:/bar/bar/bar/bar/bar/bar/bar/UHOH.png
Маловероятно, что F:/bar/bar/bar/bar/bar/bar/bar/UHOH.png
существует на вашем сервере
Вы хотите создать имя файла, например, this
sub WashFilename {
use File::Basename;
my $basename = basename( shift );
# untainted , only use a-z A-Z 0-9 and dot
$basename = join '', $basename =~ m/([.a-zA-Z0-9])/g;
# basename is now, hopefully, file.ext
## so to ensure uniqueness, we adulterate it :)
my $id = $$.'-'.time;
my( $file, $ext ) = split /\./, $basename, 2 ;
return join '.', grep defined, $file, $id, $ext;
} ## end sub WashFilename
Вы также хотите поместить файл в каталог вашего веб-сервера, который будет обслуживать изображения (НЕ cgi-bin)
И вы также хотите использовать File::Type::WebImages
- для определения типов файлов веб-изображений с помощью magic и убедитесь, что имя файла имеет соответствующее расширение, поэтому ваш сервер отправит соответствующие заголовки
И не забудьте chmod
файл соответствующим образом