【问题标题】:PHP don't print MySQL image [duplicate]PHP不打印MySQL图像[重复]
【发布时间】: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)

标签: php mysql image


【解决方案1】:

首先,我不会将图像作为 blob 保存在数据库中,将它们存储在文件夹中并将路径保存在数据库中会更容易。

如果您想按照自己的方式进行操作,请执行以下操作:

echo '<img src="data:image/png;base64,'.base64_encode( $result['image'] ).'"/>';

虽然这是一种非常糟糕的做法,并且可能会大大减慢页面加载速度。我建议您重新评估您的数据库结构并直接存储图像并将路径保存在数据库中

【讨论】:

  • 如果图片只有几个像素,页面加载会非常缓慢。
  • @bansi 是的,我并不是说这应该得到认可 ;') 但是我会编辑我的问题以明确说明
  • @Jester 谢谢你的帮助。我会按照你说的重新评估表格,重做用户注册以将图像文件保存在文件夹中,并将路径保存在数据库中。再次感谢您。
  • @FilipeSoares 没问题,甚至可以考虑为每个用户创建一个单独的文件夹。这样,您以后可以根据需要为每个用户扩展多张照片。 ^^
  • 文件系统中的图像是最快的选择。但无论如何,您希望图像位于 db 本身中,您需要创建另一个 php 文件,该文件从 db 中提取图像并提供它(除了图像),您可以将该 php 用于您的src
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
相关资源
最近更新 更多