【发布时间】:2016-07-27 02:54:30
【问题描述】:
大家下午好!!
我有一个数据库,其中包含一个包含 4 列的行的表,分别称为“ID”、“登录”、“通行证”和“图像”(BLOB)。我有一个带有用户身份验证等的系统,我想实现用户注册的图像显示在顶部栏中。到目前为止一切都很好,唯一的问题是数据库图像是这样打印的:
ÿØÿàJFIF``ÿÛC %# , #&')*)-0-(0%()(ÿÛC (((((((((((((((((((((((((((((((((((((((((((((((((((
ÿÀ€€"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’
“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3R
ðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹º
详情:当我打开NOTEPAD中选择到数据库的图片时,和上图一样。
IMAGE.PHP
include "dbconnection.php";
$defaultpath = "img/avatar.png";
$sql = "SELECT * FROM `bg_users`";
$query = mysql_query($sql);
$result = mysql_fetch_assoc($query);
if (!isset($_SESSION)) {
$_SESSION['UserImage'] = $result['image'];
print $_SESSION['UserImage'];
}
else {
echo "src='img/avatar.png'";
}
?>
再一次,PHP 和 MySQL 之间的交互非常好。问题是 PHP 没有将文件打印为图像。我无法制作header("Content-type: image/png");,因为我想要包含的页面 image.php 已经有一个 header 参数。
有人能帮我解决这个问题吗?我会很高兴的
谢谢!
【问题讨论】:
-
首先,您不应该将图像打印为 HTML,而是在此处放置一个指向某个位置的 URL,当网络请求该位置时服务器将返回图像...
-
@AnttiHaapala 是正确的。您需要一个单独的 PHP 页面来输出图像。此外,请务必在 PHP 中声明内容类型,并在使用 ob_flush() 输出图像之前清除输出缓冲区。
-
嗯,从技术上讲,您可以将图像输出为数据 URI,但这只会减慢速度。
-
简单解释:HTML 和图像是由浏览器拼接在一起的独立实体。所以它们应该由不同的请求提供服务(在你的情况下是 PHP)