Forum Webscript.Ru
Программирование => Perl => Тема начата: Mers от 21 Февраля 2004, 00:24:41
-
Смотрите, этот скрипт закачивает файлы и даже рисунки на сервер, но рисунки почему-то не просматриваются. ( просмотр недоступен )
Подскажите пожалуйста!
#!/usr/bin/perl
[здесь был кривой код]
-
Что тебе подсказать? Как просмотреть рисунки?
-
нет, вот скрипт с формой
когда я им закачаю ричунок на сервер, то рисунок становится непросмотримым, почему это происходит ?
Самое главное, чтобы в форме присутствовал параметр enctype="multipart/form-data". Иначе работать не будет.
Ну и создаем Perl-script:
Код (perl):
#!/usr/bin/perl -w
print "Content-type: text/html;\\n\\n";
if ($ENV{\'CONTENT_LENGTH\'}){
$buffer = \'\'; binmode STDIN;
read(STDIN, $input, $ENV{\'CONTENT_LENGTH\'});
}
$ENV{\'CONTENT_TYPE\'} =~ /multipart\\/form-data; boundary=(.+)$/;
$boundary = \'--\'.$1;
@list = split(/$boundary/, $input);
for ($num=1; $num<$#list;$num++){
$item = $list[$num]; $test = $item;
$item =~ /"([^"]+)"/;
$field_name = $1;
$field{$field_name} = $\';
$field{$field_name}=~ s/\\n|\\r//g;
if ($test =~ /upload_file\\d*/oi){ & }
}
sub upload{
$test=~ /Content-type:/i;$thingy=$`;
$thingy2=$\';$thingy2 =~/\\r\\n\\r\\n|\\n\\n/;$conttype=$`;
if ($conttype =~ m! (\\w+)/!i) {
$upload_type=$1;
$conttype =~ s! $upload_type/!!;
}
($not_required,@names) =split(/;/,$thingy);
$names[1] =~ /"([^"]+)"/;
$1 =~ /([^\\\\]+)$/;
$filename=$1;
$filename=~ s/ /_/g;
$filename =~ s/[-\']//g;
$test=~ /\\r\\n\\r\\n/;
$file=$\';
open(QQ,">$filename");
binmode QQ;
print QQ $file;
close QQ;
}
-
Mers
Очень криво, очень нефункционально, очень много ошибок.
Модификатор -w, как я понимаю, висит для красоты.
Следующие три строчки могут помочь тебе и сейчас и в будущем:
use CGI::Carp qw(fatalsToBrowser); # Увидишь ошибки в броузере
use strict; # Научишся объявлять переменные и т.д.
use warnings FATAL => \'all\'; # вместо -w, только любая оплошность принимается за критическую ошибку
ps: Посмотри, как это сделанно в CGI.pm. Или воспользуйся им.