【问题标题】:Gallery zend framework画廊 zend 框架
【发布时间】:2014-05-03 10:28:39
【问题描述】:

您好,我正在学习 Zend Framework,我想制作简单的图库。我有一个表格并将照片上传到数据库,但是当我想显示时,我得到了强度文本而不是图像。如何检索这些图像?在数据库中,我有 BLOB 类型的照片行。这是我的代码:控制器

public function addAction()
{
    $form = new Application_Form_Gallery();
    $this->view->form = $form;
    if($this->getRequest()->isPost()){
        $formData = $this->getRequest()->getPost();
        if($form->isValid($formData)){
            $image = $form->getValue('file');
            $gallery = new Application_Model_Gallery();
            $gallery->add($image);
            $this->_helper->redirector('index');                
        }else{
            $form->populate($formData);
        }
    }
}

型号

public function add($photo){
    $data = array(
        'photo' => $photo,
        'created_at' => new Zend_Db_Expr('CURDATE()')
    );
    $this->insert($data);
}

查看:

    <div class="img" style="width: 150px; height: 150px;">
<?php foreach($this->gallery as $photo):
    echo base64_decode($photo['photo']);
 endforeach; ?>
</div>

【问题讨论】:

  • strenght text 是什么意思?
  • 我得到的不是图像,而是 '×MøÛ¯yë®=÷ݸÓm÷óNvÓ¿:ï¯yòxér‰©•ë^uë"‚zg?]headMeta()->appendHttpEquiv('Content-Type', 'image/jpg,image/png;');
  • 为什么要将图像存储到数据库中?为什么不将它们上传到目录并将它们的名称存储到数据库中?
  • 我不知道我在学习也许这就是为什么:) 你能告诉我我该怎么做吗?

标签: php zend-framework


【解决方案1】:

在您看来,您只是将字符串 base64 解码的字符串“转储”到 div 中,这是行不通的。

您可能想要做的是在控制器中执行一个操作,将每张照片呈现为二进制响应。然后,您可以在视图中访问此操作:

<img src="<?php $this->url(
    'action_that_renders_the_photo', array('id' => $gallery['photo_id']
  ); ?>">

我更喜欢浏览器中的 base64-data。如果您想让它尽可能接近您的示例,您可能需要创建一个 &lt;img&gt; 并将其源指定为 base64-data:

<img src="data:image/png;base64,<?php echo $gallery['photo'] ?>">

但请记住,并非所有浏览器都允许嵌入 base64 数据。

【讨论】:

  • 还是不行。我想以这种方式从数据库中获取图像,我可能是从目录中获取的。
  • “它不起作用”不是一个有用的问题描述。你可以说得更详细点吗?您的问题到底出在哪里,输出是什么以及它与预期输出有何不同?看看这个问题,也许有帮助:stackoverflow.com/questions/1207190/embedding-base64-images
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
  • 2011-04-06
  • 2013-02-23
  • 1970-01-01
  • 2011-01-29
  • 2013-05-22
相关资源
最近更新 更多