Forum Webscript.Ru
Программирование => Perl => Тема начата: от 06 Марта 2002, 15:46:52
-
Народ нужна помощь.
Нужно загрузить картинку в бинарном режиме и положить ее в базу данных.
А потом взять отуда и показать как картинку в браузере.
-
И что из этого не получается?
-
open MYFILE, "binmode(MYFILE);
$pic = ;
close MYFILE;
$dbh = DBI->connect("dbi:$dbdriver:$basename:$hostname:$port","$username","$password");
$query = "UPDATE $tablename SET PIC=\'$pic\' WHERE ID=1";
$sth = $dbh->prepare($query);
$sth->execute;
$dbh->disconnect;
Понятно, можно короче, но так понятнее всем.
Короче, программа считывает файл, потом его вроде записывает в базу, можно даже вывести переменную $pic с заголовком image/gif и она отобразиться без проблем.
$dbh = DBI->connect("dbi:$dbdriver:$basename:$hostname:$port","$username","$password");
$query = "SELECT * FROM $tablename WHERE ID=1";
@row = $dbh->selectrow_array($query);
$dbh->disconnect;
print "Content-type: image/gif\\n\\n";
print @row[4];
И вот тут то полный облом, как будто в этой ячейке ничего не лежит. Естественно все пароли и таблицы правильны, иначе вряд ли без ошибок бы обошлось... Вот такая вот проблема.
-
PIC какого формата было создано?
-
поле PIC формата BLOB
-
$dbh = DBI->connect("dbi:$dbdriver:$basename:$hostname:$port","$username","$password");
$query = "UPDATE $tablename SET PIC=\'$pic\' WHERE ID=1";
$sth = $dbh->prepare($query);
$sth->execute;
$dbh->disconnect;
Я бы испльзовал placeholder:
$dbh = DBI->connect("dbi:$dbdriver:$basename:$hostname:$port","$username","$password");
$query = "UPDATE $tablename SET PIC=? WHERE ID=1";
$sth = $dbh->prepare($query);
$sth->execute($pic);
$dbh->disconnect;
print "Content-type: image/gif\\n\\n";
print @row[4];
print "Content-type: image/gif\\n\\n";
binmode STDOUT;
print @row[4];
-
Вроде заработало.
После того, как поток вывода тоже бинарным открыл.
НО! только Gif jpeg работать не желает :-(