显示存储在MySQL数据库中的图像的问题?

时间:2011-02-27 06:32:39

标签: php zend-framework

我在数据库中的blob字段中有图像我使用blow colde来显示图像但是 它没有显示任何图片,有人可以告诉我哪里错了?

这是我的模特:

public function getListUser() {

         $select = $this->select()
                    ->order('lastname DESC');
      $adapter = new Zend_Paginator_Adapter_DbTableSelect ($select);
        return $adapter;
    }

这是我的控制器:

$userModel = new Admin_Model_User();
$adapter = $userModel->getListUser();
$paginator = new Zend_Paginator ($adapter);
$paginator->setItemCountPerPage(1);
$page = $this->_request->getParam('page', 1);
$paginator->setCurrentPageNumber($page);
$this->view->paginator = $paginator;

这是我的观看代码:

<td style="width: 20%;">  <?php
     echo $this->lastname  ?> </td>

<td style="width: 20%;"><?php    header("Content-type: image/gif"); print $this->image;  ?></td>

3 个答案:

答案 0 :(得分:4)

这不是您显示图像的方式。

您的代码看起来应该是这样的。

<td style="width: 20%;">  <?php
     echo $this->lastname  ?> </td>

<td style="width: 20%;"><img src="/link-to-php-that-shows-image.php?id=123" /></td>

现在,以php文件为例(link-to-php-that-shows-image.php)。您从数据库中获取图像字段并显示它。实施例..

<?php
$image = //get image from database, based on id etc.
header("Content-type: image/gif");
print $image;
?>

答案 1 :(得分:0)

你不能做这行代码。

<td style="width: 20%;">
   <?php header("Content-type: image/gif"); print $this->image;?>
</td>

这是因为,<td style="width: 20%;">是html元素,在图像输出之前被打印,headers被发送到输出图像,所以你得到错误

Error:: Cannot modify header information - headers already sent by ..

但是你没有在zend框架中收到此错误,因为错误显示可能已被关闭,因此请查看您的application.ini文件进行设置。

执行此操作的最佳方法是将图像存储在文件夹中,并将filenamefilepath存储在数据库中并回显诸如

之类的内容
<td style="width: 20%;">
   <img src="<?php echo $imagefullpath; ?>"/>
</td>

但是,如果您仍想将图像存储在数据库中,则可以使用ajax加载图像。如需进一步帮助,请发表评论。

答案 2 :(得分:-2)

初学者有一个非常方便的规则:

  除了纯HTML之外,PHP无法做任何事情。

现在给自己回答一个问题:

    如果您将图像文件内容直接粘贴到HTML代码中,
  • 会看到任何内容吗?

然后另一个

  • 图片如何以HTML格式显示?

最后一个:

  • 您确定要将图像存储在数据库的blob字段中吗?