Php 如何在Zend中显示图像阵列?

Php 如何在Zend中显示图像阵列?,php,ajax,image,zend-framework,Php,Ajax,Image,Zend Framework,我有一个从数据库中提取的字符串形式的图像数组,我通过ajax调用将这些图像提取到浏览器中。我已经有了控制器操作设置,并且能够查看带有相关数据的图像数组,但是当我试图通过在数组上迭代并在每个字符串前面加一个标题来渲染图像时,只会显示第一个图像。我假设这是因为浏览器无法确定每个图像字符串的长度,或者Zend先发送标题,然后发送图像数据,我不确定。我已经尝试了多种封装、输出缓冲等方法,并获得了0的成功 我们试图避免将这些图像保存在磁盘上,否则我只需存储路径和id,并将其反映在视图助手中。有没有一个明显

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

我们试图避免将这些图像保存在磁盘上,否则我只需存储路径和id,并将其反映在视图助手中。有没有一个明显的方法是我遗漏的?或者可能是Zend的一个我不知道的特性,来促进我正在尝试做的事情


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

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

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

  • 以自定义结构返回更多图像的数据-例如
    json
    对象、
    XML
    文档。。。并使用
    JavaScript
    将它们放置在正确的
    HTML
    元素中
  • 在生成
    HTML
    页面期间,将图像内联到
    HTML

还有其他的解决方案…

您可以在**.phtml中使用它

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

/>

或者数据:image/png或者数据:image/gif

我最终得到了一个相当简单的解决方案;在同一控制器内创建两个操作。第一个为图像构造标记,迭代从模型函数创建的数组,该数组为特定客户机/事件提取所有图像,这将产生:

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


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

但是。。。数据库中的映像在磁盘上,您没有节省空间吗?这里的问题是映像已经在数据库中,这是一种基于会话的交互,用户只有在登录时才能访问这些资源。写入/删除/重写和/或尝试跟踪客户端/浏览器何时加载/重新加载/刷新资源看起来太混乱而无法跟踪。我在原始问题后面附加了我最终使用的解决方案。我曾考虑过这种方法,尽管我在过去使用过它,但遇到了IE对数据uri有32k限制的问题,并且将图像分割成多个部分将变得很难维护。