我在StackOverflow上阅读了所有可能的问题,我问了所有我认识的人,没有人可以帮助我。 我在数据库中有表:
CREATE TABLE IF NOT EXISTS `zdjecia` (
`id` int(11) NOT NULL,
`imie_wlasciciela` varchar(50) NOT NULL,
`zdjecie` blob NOT NULL,
`nazwa` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16
我很抱歉没有英文变量,但我想保留所有来源而不做任何更改。
imie_wlasciciela
和nazwa
在我的问题中并不重要。
所以zdjecie
是图像的二进制数据
id
是id。
我有一个应该显示图片的文件。
// single_image.php
<?php
if (isset($_GET['id']))
{
include('../connect.php'); // connect to database
$id = $_GET['id'];
$ret = $conn->query("SELECT * FROM zdjecia WHERE id=$id");
$row = $ret->fetch_assoc();
header("Content-type: image/png");
echo $row['zdjecie'];
// echo $row['nazwa']; // correct the result.
}
?>
在我的浏览器网址中,我粘贴了... / single_image.php?id = 8
我的问题是没有显示图像,我在数据库中有很少的图像。我可以在XAMPP中通过/ phpmyadmin下载它,它是正确的图像,但我的页面没有正确显示, 每次我看到一个破碎的图像图标。
文件single_image.php设置为无炸弹和Code-Page 1250(中欧)。
当我按$row['nazwa']
检查结果并评论header("Content-type...")
时,它会在数据库中显示正确的varchar(50)
。
我使用它就像写上面的几行,或者用html,<img src="single_image.php?id=8"/>
答案 0 :(得分:3)
尝试以下
echo '<img src="data:image/png;base64,'.base64_encode( $row['zdjecie'] ).'"/>';
为了更好的维护,您可以添加data:image/png;base64
作为标题,然后echo base64_encode( $row['zdjecie'] )
这将适用于single_image.php?id=$id
答案 1 :(得分:0)
使用phpMyAdmin,我必须在我的MySQL映像列= avatar_image上将MIME显示类型更改为.jpeg。一旦进行了简单的更改,它就会显示在浏览器中...即浏览器正在以原始格式将.jpeg数据作为BLOB形式获取,并且不知道如何处理...。但这是一个MySQL配置=固定它的MySQL列上的MIME类型更改。
答案 2 :(得分:-1)