Передача параметров в pl.
Подскажите как обработать передаваемые параметры в пеловском файле?
$ENV хеш такой есть в нем хранятся эти перменные
(http://www.codenet.ru/webmast/perl/pperl.php),
если влом возится пользуй CGI модуль (но там все криво).
........
если влом возится пользуй CGI модуль (но там все криво).
Это почему там все криво????
Это почему там все криво????
Да так, если просто сторочки вроде и ничего
не считая фильтров (на нулевой элемен и много чего еще), а еcли смешаные данные
(multipart/form-data) вообще кошмар. Жуткий модуль X)-
Да так, если просто сторочки вроде и ничего
не считая фильтров (на нулевой элемен и много чего еще), а еcли смешаные данные
(multipart/form-data) вообще кошмар. Жуткий модуль X)-
вроде никогда не замечал траблов с multipart/form-data, может расскажешь подробнее какие заморочки у тебя были, что бы знать кого винить если сам сталкнусь.
вроде никогда не замечал траблов с 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");
Может я туплю гдето :???:
Наверняка до тебя кто нить реализовавыл подобные операции с файлами, и наверняка успешно, с использованием пакета CGI. Как считаешь я прав???
Вот короче кусок кода, который использовался для обработки пары гигов картинок. Посмотри может чего нить поможет твоей задачке.
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);
}