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 работать не желает  :-(