【问题标题】:how do I display images from a php blob如何显示来自 php blob 的图像
【发布时间】:2013-06-12 01:54:11
【问题描述】:

我需要显示我的 php 数据库中的图像。我知道图像在那里而且这个 应该工作谁能告诉我为什么它不工作?我也知道我已成功连接到数据库,所以这不是问题

这是我连接到数据库后的第一页 index.php

<?php
$query = mysql_query("SELECT * FROM data WHERE id= 1");    
while($data=mysql_fetch_array){
?>
<p> <?php echo $data['title']; ?></p>
<img src="img.php?id=1"/>    
<?php } ?>

这里是img.php

<?php
$id=$_GET['id'];
$query = mysql_query("SELECT * FROM data WHERE id= $id");
while($data= mysql_fetch_array($query)){
$image=$data['image'];
header("content-type: image/jpeg");
echo $image;
}
?>

几个小时以来我一直在努力寻找答案

【问题讨论】:

  • 回显查询以查看发生了什么。也尝试直接运行echoed 查询。另外请停止您的应用程序中的introducing SQL injection 漏洞。也请开始缩进你的代码。
  • 我直接回应了 $data['image'],它给了我 char 表,注射可能是我的问题还是 GET 方法?
  • 这不是您要在问题中解决的问题,而是一个更重要/更麻烦的问题。

标签: php html sql blob


【解决方案1】:

需要创建图片数据资源,而不是 echo $image;

$img=false;

if($img=@imagecreatefromstring($data['image'])){

   header('Accept-Ranges: bytes');
   header('Content-Type: image/jpeg');      
   imagejpeg($img);
   imagedestroy($img);

}
else{

   //error message

}

【讨论】:

  • @user2489017 使用 mysqli 函数代替 mysql 以提高应用程序的安全性
  • @echo_Samir base64 解决方案并不兼容所有浏览器。您的第二个选项是一个不错的选择,但不能解决 blob 问题。
【解决方案2】:

你可以将图片数据转换成base64并粘贴到标签中。

   echo '<img src="data:image/jpeg;base64,' . base64_encode( $data['image'] ) . '" />';
  • 或者其他最佳解决方案是仅按名称存储图像,而不是 blob。

然后像这样调用图像

<img src="<?php echo $data['image_name_in_database'].'gif' ;?>"  height="42" width="42">

这个link可以帮助你

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-31
    • 2014-03-19
    • 2013-12-28
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多