Forum Webscript.Ru

Программирование => Perl => Тема начата: от 06 Марта 2002, 15:46:52

Название: Как записать в базу MySQL и прочитать из нее картинку в бинарном режиме?
Отправлено: от 06 Марта 2002, 15:46:52
Народ нужна помощь.
Нужно загрузить картинку в бинарном режиме и положить ее в базу данных.
А потом взять отуда и показать как картинку в браузере.
Название: Как записать в базу MySQL и прочитать из нее картинку в бинарном режиме?
Отправлено: Chs от 06 Марта 2002, 16:22:12
И что из этого не получается?
Название: Как записать в базу MySQL и прочитать из нее картинку в бинарном режиме?
Отправлено: от 06 Марта 2002, 18:51:28
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];

И вот тут то полный облом, как будто в этой ячейке ничего не лежит. Естественно все пароли и таблицы правильны, иначе вряд ли без ошибок бы обошлось... Вот такая вот проблема.
Название: Как записать в базу MySQL и прочитать из нее картинку в бинарном режиме?
Отправлено: Harvester от 06 Марта 2002, 22:18:44
PIC какого формата было создано?
Название: Как записать в базу MySQL и прочитать из нее картинку в бинарном режиме?
Отправлено: от 07 Марта 2002, 01:34:33
поле PIC  формата BLOB
Название: Как записать в базу MySQL и прочитать из нее картинку в бинарном режиме?
Отправлено: Chs от 07 Марта 2002, 09:26:45
Цитировать

$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];
Название: Как записать в базу MySQL и прочитать из нее картинку в бинарном режиме?
Отправлено: от 09 Марта 2002, 02:01:18
Вроде заработало.
После того, как поток вывода тоже бинарным открыл.

НО! только Gif  jpeg работать не желает  :-(