如何在Zend中显示图像数组?

时间:2012-12-07 17:35:45

标签: php ajax image zend-framework

我从数据库中提取了一系列图像作为字符串,我通过ajax调用将它们拉入浏览器。我有控制器动作设置,并且能够查看具有相关数据的图像数组,但是当我尝试通过迭代数组并在每个字符串前面添加标题来渲染图像时,只显示第一个图像。我假设这是因为浏览器无法确定每个图像字符串的长度,或者Zend首先发送标题然后是图像数据,我不确定。我已经尝试了多种封装方法,输出缓冲方式等,并取得了成功。

我们试图避免将这些图像保存在磁盘上,否则我只是存储路径和id并在视图助手中反映出来。这里有一个明显的方法,我错过了吗?或者可能Zend的一个功能我不知道是为了促进我正在尝试做什么?

更新:我在下面添加了解决方案。

3 个答案:

答案 0 :(得分:0)

您无法通过一个HTTP请求返回更多图片。

在您的设置中,我可以想象以下解决方案:

  • 将更多图像的数据作为自定义结构返回 - 例如json对象,XML文档...并使用HTML将其置于正确的JavaScript元素中,
  • 在生成HTML页面
  • 期间将图片内嵌到HTML

可以有其他解决方案......

答案 1 :(得分:0)

您可以在**。phtml

中使用此功能
<?php foreach($this->images as $image) :?>
  <img src="data:image/jpeg;base64,<?php echo base46_encode($image['code']) ;?>/>
<? endforeach; ?>

或data:image / png或data:image / gif

答案 2 :(得分:0)

我最终选择了一个相当简单的解决方案;在同一个控制器中创建两个动作。第一个为图像构建标记,迭代从模型函数创建的数组,该数组拉出特定客户端/事件的所有图像,这将产生:

<img src="/controller/action/imgKey/12345/" />

第二个动作将接受来自图像的资源请求,通过_request-&gt; getParam()获取imgKey;然后为每个图像提供标题和字符串。这使我可以利用已经在使用的用户身份验证和会话方案。也许这种方法对其他人有用。