Автор Тема: Аплоад картинок  (Прочитано 3728 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Hob

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Аплоад картинок
« : 07 Июня 2006, 20:51:09 »
Здравствуйте,

Не подскажете почему ф-ия image_upload при аплоаде создаёт пустые файлы (0 кб) ?


my $path_image = "C:\\\\WebServers\\\\home\\\\localhost\\\\www\\\\images\\\\photo_tmp\\\\";

....
my $albumid = exists $form{\'id\'} ? $form{\'id\'} : \'\';
my $image = exists $form{\'image\'} ? $form{\'image\'} : \'\';
my $imgname = exists $form{\'imgname\'} ? $form{\'imgname\'} : \'\';
....

sub image_upload {

 my @tv = ();
 my $file = 0;
 $tv[0] = $image;
 $tv[0] =~ s/.*((png)|(gif)|(jpg))$/$1/gi;
 $tv[0] = lc($tv[0]);
 if ($tv[0] eq \'\') {error(0);}
 
 my $dbh = DBI->connect("DBI:mysql:database=$database;host=$host",$user, $password) || die $DBI::errstr;

 $dbh->do("INSERT INTO galleryimages (id, albumid, name, type_image) VALUES(\'\', \'$albumid\', \'$imgname\', \'$tv[0]\')");
 $tv[1] = $dbh->{\'mysql_insertid\'};

 $dbh->disconnect;

 $file = $path_image.$tv[1].".".$tv[0];
 open (IMG, ">$file") or die ("Cannot open file $file");
 binmode IMG;
 flock ($file, 2);
 print IMG while (<$image>);
 close (IMG);
 chmod 0644, $file;

}

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Аплоад картинок
« Ответ #1 : 07 Июня 2006, 23:21:27 »
Было-бы здорово взглянуть как %form заполняется.
Модулем CGI религия не позволяет пользоваться?
The documentations is your friend

Оффлайн Hob

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Аплоад картинок
« Ответ #2 : 08 Июня 2006, 12:52:49 »
для NeoNox
Заменил

my $albumid = exists $form{\'id\'} ? $form{\'id\'} : \'\';
my $image = exists $form{\'image\'} ? $form{\'image\'} : \'\';
my $imgname = exists $form{\'imgname\'} ? $form{\'imgname\'} : \'\';

на

my $query = new CGI;
my $albumid = $query->param(\'id\');
my $image = $query->param(\'image\');
my $imgname = $query->param(\'imgname\');

В логе ошибка:
flock() on unopened filehandle at y:\\\\home\\\\LOCALH~2\\\\www\\\\gallery\\\\MNGIMA~1.PL line 51.\\n
readline() on unopened filehandle at y:\\\\home\\\\LOCALH~2\\\\www\\\\gallery\\\\MNGIMA~1.PL line 52.\\n

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Аплоад картинок
« Ответ #3 : 08 Июня 2006, 13:37:27 »
И при этом не умирает на die?
Смотреть что в  $file.
Вообще в такой ситуации вывести значение всех переменных.
The documentations is your friend

Оффлайн Hob

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Аплоад картинок
« Ответ #4 : 08 Июня 2006, 13:51:26 »
Да сам удивляюсь...
переменные проверял несколько раз.
albumid = 1;
image = C:\\WebServers\\home\\localhost\\www\\images\\photos\\02180002.JPG;
imgname = тест;
file = C:\\WebServers\\home\\localhost\\www\\images\\photo_tmp\\38.jpg;

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28