Forum Webscript.Ru

Программирование => Perl => Тема начата: Mers от 21 Февраля 2004, 00:24:41

Название: (+) image upload - please !!!
Отправлено: Mers от 21 Февраля 2004, 00:24:41
Смотрите, этот скрипт закачивает файлы и даже рисунки на сервер, но рисунки почему-то не просматриваются. ( просмотр недоступен )  
Подскажите пожалуйста!


#!/usr/bin/perl
[здесь был кривой код]
Название: (+) image upload - please !!!
Отправлено: NeoNox от 21 Февраля 2004, 00:42:11
Что тебе подсказать? Как просмотреть рисунки?
Название: (+) image upload - please !!!
Отправлено: Mers от 21 Февраля 2004, 17:46:41
нет, вот скрипт с формой
когда я им закачаю ричунок на сервер, то рисунок становится непросмотримым, почему это происходит ?










Самое главное, чтобы в форме присутствовал параметр 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;

}
Название: (+) image upload - please !!!
Отправлено: ondr от 21 Февраля 2004, 22:55:35
Mers
Очень криво, очень нефункционально, очень много ошибок.
Модификатор -w, как я понимаю, висит для красоты.

Следующие три строчки могут помочь тебе и сейчас и в будущем:

use CGI::Carp qw(fatalsToBrowser); # Увидишь ошибки в броузере

use strict; # Научишся объявлять переменные и т.д.
use warnings FATAL => \'all\'; # вместо -w, только любая оплошность принимается за критическую ошибку

ps: Посмотри, как это сделанно  в CGI.pm. Или воспользуйся им.