Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Передача параметров в pl.

1.9K
06 ноября 2003 года
Mao
35 / / 06.11.2003
Подскажите как обработать передаваемые параметры в пеловском файле?
5.1K
06 ноября 2003 года
Bill
9 / / 03.11.2003
Цитата:
Originally posted by Mao
Подскажите как обработать передаваемые параметры в пеловском файле?


$ENV хеш такой есть в нем хранятся эти перменные
(http://www.codenet.ru/webmast/perl/pperl.php),
если влом возится пользуй CGI модуль (но там все криво).

300
06 ноября 2003 года
ReDrum
689 / / 20.04.2000
Цитата:
Originally posted by Bill

........
если влом возится пользуй CGI модуль (но там все криво).



Это почему там все криво????

1.9K
06 ноября 2003 года
Mao
35 / / 06.11.2003
Сенкс.:)
5.1K
06 ноября 2003 года
Bill
9 / / 03.11.2003
Цитата:
Originally posted by ReDrum


Это почему там все криво????


Да так, если просто сторочки вроде и ничего
не считая фильтров (на нулевой элемен и много чего еще), а еcли смешаные данные
(multipart/form-data) вообще кошмар. Жуткий модуль X)-

300
06 ноября 2003 года
ReDrum
689 / / 20.04.2000
Цитата:
Originally posted by Bill

Да так, если просто сторочки вроде и ничего
не считая фильтров (на нулевой элемен и много чего еще), а еcли смешаные данные
(multipart/form-data) вообще кошмар. Жуткий модуль X)-



вроде никогда не замечал траблов с multipart/form-data, может расскажешь подробнее какие заморочки у тебя были, что бы знать кого винить если сам сталкнусь.

5.1K
06 ноября 2003 года
Bill
9 / / 03.11.2003
Цитата:
Originally posted by ReDrum


вроде никогда не замечал траблов с multipart/form-data, может расскажешь подробнее какие заморочки у тебя были, что бы знать кого винить если сам сталкнусь.


Example: Надо передать в форме
Название картинки Имя емаил + Саму картинку,
Происходит следующая ерунда картинка доходит, строковых полей нет, после эсперементов на локалке
вообще краш перла с редактором. Плюнул, сам задолбил ручками запрос и больше никогда не кода не подключал этот глючный модуль.

Форма приблезительно такая
<form method="POST" enctype="multipart/form-data" Action="&&" >
<input type="text" size="20"name="name" maxlength=20>
<input type="text" size="20"name="town" maxlength=20 >
<input type=file size=35 name='remote_file'>
</form>

Скрит ~ следующий
use CGI;
use CGI::Carp qw(fatalsToBrowser);
my $q = new CGI;
my $fh=$q->param("remote_file");
#Дальше ничего получить не могу
my $name=$q->param("name");

Может я туплю гдето :???:

300
06 ноября 2003 года
ReDrum
689 / / 20.04.2000
Сомнения у меня по твей проблеме.
Наверняка до тебя кто нить реализовавыл подобные операции с файлами, и наверняка успешно, с использованием пакета CGI. Как считаешь я прав???

Вот короче кусок кода, который использовался для обработки пары гигов картинок. Посмотри может чего нить поможет твоей задачке.


Код:
use Imager;
use File::MkTemp;
use File::Basename;
use File::Copy;

=head2 Проверка и сохранение изображения

    $res = img_save($BATT_OBJECT_REF, $config, $cgi_query);
    $res = {name=>'image name', width=>'шиирна', height=>'высота'}

=cut

sub img_save{
    my $res = {name=>'', height=>0, width=>0};
    my $object = shift;
    return $res if (!$object);
    my $config = shift;
    return $res if (!$config);
    my $query = shift;
    return $res if (!$query);

    my $filename = $object->get_value;
    if (!$filename) {
       $object->set_errmsg("There are no file");
       return $res;
    }

    my @type = ('jpg', 'gif', 'png');
    fileparse_set_fstype('MSWin32');
    my ($fname, $dirpath, $suffix) = fileparse($filename, @type);
    my $tmpfile = $config->get_home_path."/".$config->get_tmp_path;
    $tmpfile = $tmpfile."/".mktemp('tmpXXXXXX', $tmpfile).".$suffix";
    open (FILE, "> $tmpfile") || die ("can't create temp file $tmpfile. contact webmaster.");
    binmode(FILE);
    my $buffer;
    while (read($filename, $buffer, 1024)) {
        print FILE $buffer;
    }
    close(FILE);

    #далее требуется попробовать открыть его и пересохранить, если он в порядке
    $fname = convert_fname($fname)."$suffix";
    my $img = Imager->new();
    if ($img->open(file=>$tmpfile)) {
        $res->{'width'} = $img->getwidth();
        $res->{'height'} = $img->getheight();
        $fname = $config->get_home_path."/".$config->get_www_path."/".$config->get_pics_path."/$fname";
        ($fname, $res->{'name'}) = dublicate_if_exist($fname);

        if (!move($tmpfile, $fname)) {
            $res->{'name'} = undef;
            $object->set_errmsg("system error: can't move file. contact webmaster.");
        }
    }
    else {
        $object->set_errmsg($img->{'ERRSTR'});
    }
    unlink $tmpfile;
    return $res;
}

=head2 Проверка существования файла и модуляция его имени в зависимости от этого

    Задается полный путь. Подразумеваем,что используется текущая ОС
    ($fname, $shortname) = dublicate_if_exist($fname);

=cut

sub dublicate_if_exist{
    my $fname = shift;
    fileparse_set_fstype($^O);
    if (-e $fname) {
       my ($name, $dir, $suffix) = fileparse($fname, '\.(\w+)');
       my $i=0;
       while ((-e "$dir$name".chr(97+$i)."$suffix") && $i<26)  {
             $i++;
       }
       $fname = "$dir$name".chr(97+$i)."$suffix";
    }
    my ($name, $dir, $suffix) = fileparse($fname, '\.(\w+)');
    my $shortname = $name.$suffix;
    return ($fname, $shortname);
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог