我在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
我的问题是没有显示图像,我在数据库中有很少的图像。我可以通过/ phpmyadmin在XAMPP下载它,它是正确的图像,但我的页面没有正确显示它,每次我看到一个损坏的图像图标。
文件single_image.php设置为无炸弹和Code-Page 1250(中欧)。
当我通过$row['nazwa']
检查结果,并评论header("Content-type...")
线时,它显示正确的varchar(50)
来自数据库。
我正在使用它,就像在上面写几行,或在html,<img src="single_image.php?id=8"/>
试试以下
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
使用phpMyAdmin,我不得不在MySQL镜像列= avatar_image上将MIME显示类型更改为.jpeg。一旦我做了这个简单的改变,就会在浏览器中显示...即。浏览器将原始格式的.jpeg数据作为BLOB获取,并且不知道如何处理...但是MySQL列上的MySQL配置= MIME类型更改修复了它。